Docker传递环境variables

这里是我的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 

我能够login到容器,echo $域,它显示已通过的EV,但复制命令没有复制文件。

任何想法,我可能做错了什么?

谢谢

你不能有两个CMD线,第二个将简单地覆盖第一个。 但在你的情况,我想你想使用WORKDIR命令来设置目录,而不是CMD例如:

 WORKDIR /etc/httpd/conf.d/ 

这应该设置当前目录下的所有说明和容器的启动。

顺便说一声我不知道你是如何login到这个容器 – 当你运行它时, cp命令将会触发,一旦完成,容器将退出。 如果你重写CMD来获得shell(例如docker run -it mycontainer bash ), cp命令将永远不会被执行。