Docker传递环境变量

时间:2015-12-17 22:10:11

标签: docker

这是我的DockerFile,它有一个默认的EN,如果指定的话,我想覆盖容器部署。

ENV domain example.com

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

但是使用-e命令

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

我能够登录容器,echo $ domain并显示已经传递的EV但是复制命令没有复制文件。

关于我可能做错什么的任何想法?

由于

1 个答案:

答案 0 :(得分:1)

你不能有两条CMD行,第二行只会覆盖第一行。但在你的情况下,我认为你想使用WORKDIR命令设置目录,而不是CMD例如:

WORKDIR /etc/httpd/conf.d/

这应该为所有后续指令和容器启动设置当前目录。

BTW我不确定你是如何登录这个容器的 - 当你运行它时,cp命令将会激活,容器一旦完成就会退出。如果覆盖CMD以获取shell(例如使用docker run -it mycontainer bash),则永远不会执行cp命令。