Как изменить значение ARG докера внутри оператора if? - PullRequest
0 голосов
/ 30 мая 2018

В моем Dockerfile на Ubuntu 16.04 с docker 17.12.1-ce Я использую

ARG ver=latest
ARG pkg=master

Для создания Docker-контейнера я хотел бы позвонитьdocker build --build-arg ver=v1 . для установки специального пакета.

Часть обработки кода в моем Dockerfile -

RUN if[ "x$ver" = "xv1" ] ; then pkg=v1.2.3 ; fi
RUN echo $pkg

К сожалению, переменная ARG pkg не обновляетсяи оператор echo всегда показывает свое начальное значение.

Что я могу сделать, чтобы обновить мою переменную сборки pkg внутри оператора if ??

1 Ответ

0 голосов
/ 30 мая 2018

Вы не сможете передавать переменные из одной RUN в другую, потому что каждая команда RUN выполняется в другой оболочке.Решением вашей проблемы было бы извлечь логику в скрипт и выполнить docker с аргументами сборки примерно так:

if [ $ver="v1" ]; then pkg=1.2.3; fi; docker build --build-arg ver=$ver --build-arg pkg=$pkg .
...