В докере я хочу сделать это:
git clone XYZ
cd XYZ
make XYZ
Однако, поскольку нет команды cd, мне приходится каждый раз указывать полный путь (make XYZ / fullpath). Какие-нибудь хорошие решения для этого?
В докере я хочу сделать это:
git clone XYZ
cd XYZ
make XYZ
Однако, поскольку нет команды cd, мне приходится каждый раз указывать полный путь (make XYZ / fullpath). Какие-нибудь хорошие решения для этого?
Ответы:
Вы можете запустить скрипт или более сложный параметр для запуска. Вот пример из Dockerfile, который я скачал, чтобы посмотреть ранее:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
Из-за использования '&&', он доберется до последней команды 'pip install' только в том случае, если все предыдущие команды были выполнены успешно.
Фактически, поскольку каждый RUN создает новый коммит и (в настоящее время) слой AUFS, если у вас слишком много команд в Dockerfile, вы будете использовать ограничения, поэтому объединение RUN (когда файл стабилен) может быть очень полезная вещь
cd
единственного длится для текущей RUN
команды. Следующая RUN
начнется с текущей WORKDIR
.
Для перехода в другой каталог используйте WORKDIR . Все команды RUN, CMD и ENTRYPOINT после WORKDIR будут выполняться из этого каталога.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make