Я пытаюсь передать переменную в простой сценарий Docker
Я попробовал метод, описанный здесь .
FROM golang:latest
ARG buildtime_variable=default_value
ENV env_var_name=$buildtime_variable
RUN echo $env_var_name
Я попытался построить его с помощью
сборка докера --build-arg buildtime_variable = a_value.
И я получаю результаты
Отправка контекста сборки в демон Docker 2.048kB
Шаг 1/4: ОТ ГОЛАНГА: последний ---> da66b002dd02
Шаг 2/4: ARG buildtime_variable = default_value ---> Запуск в 91055d467539 Удаление промежуточного контейнера 91055d467539 ---> 1241ad5c9f12
Шаг 3/4: ENV env_var_name = $ buildtime_variable ---> Запуск в c61292041ccf Удаление промежуточного контейнера c61292041ccf ---> 4eeac4402f5b
Шаг 4/4: RUN echo $ env_var_name ---> Запуск в 80ba16d2ee9c Удаление промежуточного контейнера 80ba16d2ee9c ---> b814420cc448 Успешно построенный b814420cc448
Я ожидал, что он отобразит a_value, вместо этого он ничего такого не делает, его как переменная неполучить правильно переданы.
Я попробовал это с RUN echo A
, что дало ожидаемый результат эхо A
Пора использовать env-файл?или мне не нужно прибегать к этому?
РЕДАКТИРОВАТЬ
Только что сделал обновление, информация о моей версии
версия докера Client: Docker Engine - Версия сообщества:
18.09.2 Версия API: 1.39 Версия Go: go1.10.8 Git commit: 6247962 Построен: Sun 10 февраля 04:12:31 2019 OS / Arch: windows / amd64 Экспериментальный: false
Сервер: Docker Engine - Community Engine: Версия: 18.09.2 Версия API: 1.39 (минимальная версия 1.24) Версия Go:
go1.10.6 Git commit: 6247962 Год постройки: Sun Feb 10 04:28:48 2019OS / Arch: windows / amd64 Экспериментальный:
false
EDIT
Я только что попытался переключиться на контейнеры Linux и попробовал пример из здесь
FROM ubuntu
ARG CONT_IMG_VER
ENV CONT_IMG_VER v1.0.0
RUN echo $CONT_IMG_VER
сборка докера --build-arg CONT_IMG_VER = v2.0.1.
Это фактически выводит значение!
к сожалению, это значение по умолчанию v1.0.0
вместо переменной, определенной --build-arg
Кроме того, мне нужно это для работы с Windows Container.