Докер: переменные в двухэтапной сборке - PullRequest
0 голосов
/ 28 августа 2018

Я использую двухэтапную сборку для образа докера;

Я хочу, чтобы на втором этапе я настраивал значение, поэтому я подумал об использовании ARG.

Однако я не уверен, что опция командной строки --build-arg применима к другим, кроме первого этапа, поэтому я придумал этот

### First stage
FROM some_base_image

ARG MYUSERNAME=foo

### Second stage
FROM another_base_image

ARG MYUSERNAME=$MYUSERNAME

но это не сработало;

какие-либо предложения, как передать через build командную строку некоторые --build-arg s, которые должны использоваться со второго этапа?

1 Ответ

0 голосов
/ 28 августа 2018

ARG инструкции имеют область действия, это описано здесь в документации: https://docs.docker.com/engine/reference/builder/#scope

Инструкция ARG выходит из области действия в конце этапа сборки, где она была определена. Чтобы использовать arg в несколько этапов, каждый этап должен включать инструкцию ARG.

Таким образом, вы можете использовать ARG в несколько этапов, вам просто нужно снова использовать инструкцию ARG, как показано в примере:

FROM busybox
ARG SETTINGS
RUN ./run/setup $SETTINGS

FROM busybox
ARG SETTINGS
RUN ./run/other $SETTINGS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...