Переменная Docker ENTRYPOINT не переносится в CMD - PullRequest
3 голосов
/ 05 мая 2019

У меня есть базовое изображение, которое экспортирует несколько переменных в свой сценарий оболочки ENTRYPOINT docker-entry.sh.

Теперь я использую базовый образ и запускаю CMD с mongo-entry.sh.Я надеялся получить доступ к переменным, экспортированным из ENTRYPOINT в mongo-entry.sh.

Я могу видеть распечатки операторов журнала с переменными из docker-entry.sh, но я не могу получить к ним доступ в mongo-entry.sh

Я уже пытался вызвать docker-entry.sh и mongo-entry.sh как ENTRYPOINT в моем DockerFile

Код:

Базовое изображение ENTRYPOINT docker-entry.sh

 export var1 = "var1"

Текущее изображение

FROM 'baseimage'
COPY ["mongo-entry.sh"]
CMD ["mongo-entry.sh"]

mongo-entry.sh

echo "var1=$VAR1"

Выход

var1=

1 Ответ

2 голосов
/ 05 мая 2019

Я подозреваю, что есть 1-2 проблемы:

  1. ENTRYPOINT и CMD не наследуются от FROM образа
  2. Возможно, вы используете форму exec ENTRYPOINT | CMD

Существует 2 формы ENTRYPOINT и CMD, формы shell и exec. Форма exec «не вызывает командную оболочку», поэтому вы не получите обработку переменных среды:

https://docs.docker.com/engine/reference/builder/#cmd

Вот пример, который показывает ENV значения, проходящие через FROM 'd изображений:

echo '
FROM bash
ENV DOG=Freddie
ENTRYPOINT echo "dog=${DOG}"
' | docker build --tag=1st --file=- .
echo '
FROM 1st
ENV CAT=Emmett
ENTRYPOINT echo "dog=${DOG}" "cat=${CAT}"
' | docker build --tag=2nd --file=- .
docker run 1st
docker run 2nd

Результаты:

dog=Freddie
dog=Freddie cat=Emmett

NB ${DOG} (и его значение) наследуется от 1st

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...