单独启动docker-compose的其中一个容器

(草稿,细节待完善)

 

我有一个 docker-compose.yml 文件,其中包含多个容器:redis,postgres,mysql,worker

在的工作过程中,我经常需要重新启动它才能更新。有没有什么好的方法来重新启动一个容器(例如 worker )而不重新启动其他容器?

解决方案这很简单:使用命令:

docker-compose restart worker 

您可以设置等待停止的时间,然后再杀死容器(以秒为单位)

docker-compose restart -t 30 worker 

 

步骤:

另外还有一种情况就是,本地修改了代码,需要重新打包发布,但是又不想全部docker-compose停止再启动,那么就可以单独修改其中一个。

1、首先通过 docker ps 查询已启动的容器(docker ps  -a 查询所有容器,包括未启动的)
 命令 docker container ls -a 也一样。

2、将要更新的容器停止docker-compose stop worker (docker-compose stop 是停止yaml包含的所有容器)

3、将第二步已停止的容器删除 docker container rm c2cbf59d4e3c  (c2cbf59d4e3c是worker的容器id)

4、查询所有的镜像 docker images

5、备份镜像,防止意外出错可恢复。docker save worker  -o  /home/bak/worker-bak.tar

6、删除镜像 docker rmi worker

7、将打包好的更新的jar文件按照docker-compose的描述地址放好,再根据文件编译新的镜像 docker build . -f Dockerfile-Worker -t  worker

8、启动docker-compose up -d  worker

9、重启docker-compose restart worker


 

Dockerfile-Worker

FROM jdk1.8
WORKDIR /app
COPY ./targ

你可能感兴趣的:(centos7,docker,docker,docker-compose)