2015-12-17 3 views
1

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

ENV domain example.com 

CMD ["cd","/etc/httpd/conf.d/"] 
CMD [ "cp", "VirtualHost", "${domain}" ] 

Однако при прохождении EN с помощью -e команды

docker run -it -e domain="test.com" container_id 

Я могу войти в контейнер, эхо $ домена и он отображает EV, который был принят однако команда копия Бесполезный Скопируйте файл.

Любые идеи о том, что, возможно, я делаю неправильно?

Благодаря

ответ

1

Вы не можете иметь две CMD линии, второй просто переопределить первый. Но в вашем случае, я думаю, что вы хотите использовать команду WORKDIR, чтобы установить каталог, а не CMD: например

WORKDIR /etc/httpd/conf.d/ 

Это должно установить текущий каталог для всех следующих инструкций и контейнер пуска.

BTW Я не уверен, как вы входите в этот контейнер - когда вы запустите его, команда cp будет стрелять, и контейнер выйдет после его завершения. Если вы переопределите CMD, чтобы получить оболочку (например, с docker run -it mycontainer bash), команда cp никогда не будет выполнена.

+0

и doc https://docs.docker.com/engine/reference/builder/#cmd states 'В файле Docker может быть только одна команда CMD. Если вы перечислите несколько CMD, тогда вступит в силу только последний CMD. 'В самом начале – user2915097

Смежные вопросы