Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 带有配置文件的映像部署_Docker - Fatal编程技术网

Docker 带有配置文件的映像部署

Docker 带有配置文件的映像部署,docker,Docker,我有一个我想要部署的映像。想象一下myapp:latestimage中的web应用程序: FROM debian:jessie [...] EXPOSE 80 CMD ["/bin/bash", "/bin/run_myapp.sh"] 其中/bin/run\u myapp.sh从/etc/myapp.conf加载配置文件。 要使用3个不同的配置文件部署3个实例,我认为可以执行以下操作: C1=$(docker run -d myapp) C2=$(docker run -d myapp) C

我有一个我想要部署的映像。想象一下
myapp:latest
image中的web应用程序:

FROM debian:jessie
[...]
EXPOSE 80
CMD ["/bin/bash", "/bin/run_myapp.sh"]
其中/bin/run\u myapp.sh/etc/myapp.conf加载配置文件。 要使用3个不同的配置文件部署3个实例,我认为可以执行以下操作:

C1=$(docker run -d myapp)
C2=$(docker run -d myapp)
C3=$(docker run -d myapp) 
...

docker cp myapp1.conf $C1:/etc/myapp.conf
docker cp myapp2.conf $C2:/etc/myapp.conf
docker cp myapp3.conf $C3:/etc/myapp.conf
但是有了这个想法,容器已经在运行了,所以/bin/run\u myapp.sh已经读到了/etc/myapp.conf。如果在启动myapp之前i
docker cp
,则容器不存在


什么
docker
解决方案可用于此部署场景?

解决方案是在步骤中使用
create
,然后执行
cp
,最后启动
容器

C1=$(docker create myapp)
C2=$(docker create myapp)
C3=$(docker create myapp) 

docker cp myapp1.conf $C1:/etc/myapp.conf
docker cp myapp2.conf $C2:/etc/myapp.conf
docker cp myapp3.conf $C3:/etc/myapp.conf 

docker start $C1
docker start $C2
docker start $C3

我通常通过--env或--env文件使用环境变量。这样,dev和prod之间就不会发生代码/脚本更改。如果必须使用config文件,也许可以将这三个文件构建到映像中,并在运行时使用--env指定其位置。