我有一个船坞式作曲。Yml文件包含4个容器:redis, postgres, API和worker。

在工作容器的开发过程中,我经常需要重新启动它以应用更改。有没有什么好方法可以在不重启其他容器的情况下重启单个容器(例如worker) ?


当前回答

简单的“docker”命令对“worker”容器一无所知。 使用这样的命令

Docker-compose -f Docker-compose。Yml重启工作

其他回答

在进行更改之后,您需要将更改拉入服务器,然后重新创建容器。如文档所示:

docker-compose pull worker && docker-compose up -d --no-deps worker

Pull worker将只将这个项目拉到服务器,而——no-deps将防止重新启动工作者容器所依赖的容器。

要重新启动一个更改的服务,以下是我执行的步骤:

docker-compose stop -t 1 worker
docker-compose build worker
docker-compose up --no-start worker
docker-compose start worker

简单的“docker”命令对“worker”容器一无所知。 使用这样的命令

Docker-compose -f Docker-compose。Yml重启工作

答案在这里讨论的是对docker-compose变化的反映。yml文件。

但是,如果我想将我在代码中所做的更改合并到一起,并且我相信这只有通过重建映像才能实现,并且我使用以下命令

1. Docker容器停止

docker stop container-id

2. Docker容器移除

docker rm container-id

3.Docker图像移除

docker rmi image-id

4. 重新组合容器

docker-compose up container-name

由于其他一些答案包含关于重新构建的信息,并且我的用例也需要重新构建,所以我有一个更好的解决方案(与那些相比)。

仍然有一种方法可以轻松地在一行中只针对一个工作容器进行重建+重启,尽管它实际上不是一个命令。对我来说,最好的解决方案就是重建和重启:

docker-compose build worker && docker-compose restart worker

这同时实现了我的两个主要目标:

目标是单个工作者容器 在一行中重新构建和重新启动它

希望这能对大家有所帮助。