Однако, поскольку нет команды cd, я должен каждый раз проходить полный путь (сделать XYZ/полный путь). Любые хорошие решения для этого?
Ответ 1
Вы можете запустить script или более сложный параметр для RUN. Вот пример из файла Docker, который я загрузил, чтобы посмотреть ранее:
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, если у вас слишком много команд в файле Docker, вы будете использовать лимиты, поэтому объединение RUN (когда файл стабилен) может это очень полезная вещь.
Ответ 2
Чтобы перейти в другой каталог, используйте WORKDIR. Все команды RUN, CMD и ENTRYPOINT после WORKDIR будут выполняться из этого каталога.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
Ответ 3
RUN git clone http://username:[email protected]/example.git
WORKDIR /folder
RUN make