замените значения ENV файла Dockerfile во время выполнения

#docker #environment-variables

#docker #переменные среды

Вопрос:

У меня похожая проблема. Мой файл Dockerfile

 FROM busybox

ENV foo dev
ENV bar xyz

COPY run.sh /

ENTRYPOINT ["/bin/sh", "/run.sh"]
  

the run.sh файл:

 #!/bin/bash

echo $foo $bar
  

После сборки я запускаю: docker run example --env "foo=Hallo Welt" но я получаю вывод: dev xyz

Итак, каким-то образом docker не заменяет мои значения ENV. Что я делаю не так?

Комментарии:

1. Вам нужно поставить --env перед именем изображения example . (Попробуйте добавить echo command line args: "$@" в свой скрипт и посмотрите, что произойдет.)

Ответ №1:

Все аргументы, указанные после имени изображения, обрабатываются как входные аргументы для контейнера, в отличие от флагов для Docker.

Переместите имя изображения в конце команды:

 $ docker run --env "foo=Hallo Welt" example
Hallo Welt xyz