docker - 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

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

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

谢谢

最佳答案

您不能有两个CMD行,第二个将简单地覆盖第一个。但是对于您而言,我认为您想使用WORKDIR命令设置目录,而不是CMD例如:

WORKDIR /etc/httpd/conf.d/

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

顺便说一句,我不确定您如何登录该容器-运行它时,cp命令将触发,并且一旦完成,容器将退出。如果您覆盖CMD以获取 shell 程序(例如,使用docker run -it mycontainer bash),则将永远不会执行cp命令。

https://stackoverflow.com/questions/34345203/

相关文章:

docker - 使用criu进行Docker容器迁移

windows - Docker无法处理Dockerfile

windows - Boot2Docker:无法创建目录:协议(protocol)错误

docker - Travis未缓存目录

docker - 使用 Docker 部署集群(即 MongoDb/ElasticSearch)并链

google-app-engine - 使用自定义运行时在托管VM上的Ubuntu

ubuntu - Docker:系统错误:无法创建 pivot_root 目录

docker - 我的Docker容器中包含哪些运行标志

docker - 在MacOS上使用docker作为提供程序的游民,无法在容器中挂载目录

docker - Rancher imageUuid 不是唯一的