У докері я хочу це зробити:
git clone XYZ
cd XYZ
make XYZ
Однак, оскільки немає команди CD, я повинен проходити повний шлях щоразу (робити XYZ / fullpath). Будь-які хороші рішення для цього?
У докері я хочу це зробити:
git clone XYZ
cd XYZ
make XYZ
Однак, оскільки немає команди CD, я повинен проходити повний шлях щоразу (робити XYZ / fullpath). Будь-які хороші рішення для цього?
Відповіді:
Ви можете запустити скрипт або більш складний параметр до RUN. Ось приклад із завантаженого файлу 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