Изменить каталог команды в Docker?

В докере я хочу сделать это:

git clone XYZ
cd XYZ
make XYZ

Однако, поскольку нет команды 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