这是我的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但是复制命令没有复制文件。
关于我可能做错什么的任何想法?
由于
答案 0 :(得分:1)
你不能有两条CMD
行,第二行只会覆盖第一行。但在你的情况下,我认为你想使用WORKDIR
命令设置目录,而不是CMD
例如:
WORKDIR /etc/httpd/conf.d/
这应该为所有后续指令和容器启动设置当前目录。
BTW我不确定你是如何登录这个容器的 - 当你运行它时,cp
命令将会激活,容器一旦完成就会退出。如果覆盖CMD
以获取shell(例如使用docker run -it mycontainer bash
),则永远不会执行cp
命令。