在使用Docker Compose进行管理时,需要更新文件

比如说,有时候我们想要更新并使得nginx的配置文件生效。

定义前提例

version: '2'
services:
    nginx:
        build: ./nginx
        container_name: nginx
        ports:
            - 80:80
    (以下略)
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 443
$ docker-compose -p foo up -d

当使用-p foo选项时,图像名称、网络名称和卷名称会以foo_作为前缀添加。

Docker命令

$ docker cp default.conf nginx:/etc/nginx/conf.d/default.conf
$ docker exec nginx nginx -s reload

当然,即使使用Docker Compose 的话也可以通过上述方法进行更新和部署,不过使用Docker Compose 的功能可能更好呢,这个意思吧?

docker-compose命令

docker-compose -p foo build nginx
docker-compose -p foo up -d nginx

然后会显示”Recreating nginx”。它仅重新创建nginx镜像,并创建一个新的容器来替换现有容器。
这样一来,更新后的default.conf在镜像中得到了体现,而且如果已经在使用Docker Compose,那么使用这种方式可能更好一些呢?

请注意

只要重新创建容器,我觉得nginx会一瞬间停止,如果那会造成问题的话,就不能使用这种方法了。这种情况下似乎只能使用docker命令的方式?