Передача аргументов docker-compose в скрипт ENTRYPOINT - PullRequest
0 голосов
/ 25 января 2019

Мой docker-compose.yml выглядит так:

...
build:
  context: myimg
  args:
    - FOO=bar

И мой dockerfile делает это:

...
ARG FOO
ENTRYPOINT run.sh

Однако мой скрипт не видит FOO var ...

Inside run.sh:

echo $FOO

ничего не выводит. Я пробовал несколько комбинаций форм shell и exec и передавал vars как env vars, но ничего не работает. Мне нужно передать их как env vars, а не params.

1 Ответ

0 голосов
/ 25 января 2019

args: только влияют на построение исходного изображения, и первоначальная сборка изображения не знает ни об остальном контексте, который вы можете определить в вашем docker-compose.yml файле.

Если вы надеетесь использовать это для конфигурации времени выполнения, настройка environment: будет лучше. В отличие от аргументов времени сборки, вам не придется перестраивать образ, просто чтобы изменить настройку переменной среды. Удалите строку ARG из Dockerfile и измените файл docker-compose.yml на

build:
  context: myimg
environment:
  - FOO=bar

Если вы хотите, чтобы значение ARG было видимо как переменная среды позже (например, в скрипте ENTRYPOINT), вам также необходимо добавить для него параметр ENV; пара примеров в документации Dockerfile . Это может выглядеть как

FROM ...
ARG FOO
ENV FOO=$FOO
COPY run.sh /
ENTRYPOINT ["/run.sh"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...