2016-10-30 1 views
7

У меня есть Dockerfile, и я хотел бы настроить API на значение по умолчанию.Dockerfile Переопределение переменной ENV

ОТ SocialEngine/Nginx-шпа

ENV API_URL локальный: 6007

Так что, когда я запускаю этот образ я, чтобы иметь возможность переопределить Localhost: 6007 с чем-то, как показано ниже:

докер запустить -e API_URL = production.com: 6007 щ

Это не работает, и я не могу найти четкое объяснение того, как это сделать.

Любые советы?

ответ

13

То, что вы описали, должно работать нормально. Дано:

$ cat Dockerfile 
FROM socialengine/nginx-spa 
ENV API_URL localhost:6007 
$ docker build -t ui . 
[...] 

Рассмотрим это:

$ docker run -it --rm ui env | grep API_URL 
API_URL=localhost:6007 

По сравнению с:

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL 
API_URL=production:6007 

Передача -e VARNAME=varvalue на docker run командной строки переопределяет значение по умолчанию, установленный в вашем Dockerfile.

Если вы видите другое поведение, обновите свой вопрос, чтобы показать точно, какую команду вы выполняете, и соответствующий результат.

Update

Вот полный пример, записанный для Вашего удовольствия:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

+0

Спасибо за ответ. Но я не думаю, что это действительная команда докеров, которую вы мне дали. Он пытается создать изображение ENV. – Proximo

+0

Э-э, что? Это совершенно правильные команды докеров. Обратите внимание, что имя изображения в обоих примерах - 'ui'. И это команды 'docker run', они ничего не построят. Они могут попытаться вытащить изображение, если вы что-то придумаете. – larsks

+1

Интересно, это не сработало, но ваш ответ помог мне разобраться в моей проблеме. Я попытался использовать переменную ENV в секции RUN, когда я должен использовать ее как CMD. Извините за неопределенный вопрос. +1 для asciinema.org. – Proximo