我正在使用 docker swarm 和 docker compose 来支持 ~6 项服务。其中一项服务来自不经常更改的 docker 映像,但更改的是主机上的配置文件,我将其作为卷安装到容器中。
由于图像没有更改,因此当我执行新的
docker stack deploy
命令时,服务不会重新启动,并且不会拾取对配置文件的更改(因为配置文件仅在启动时读取) .
我目前所做的是
docker stack rm my-stack
杀死一切,然后docker stack deploy my-stack
。我想这很好,但我想知道是否有更好的方法来强制服务重新启动,而不是杀死所有内容并在重新启动时有 20 秒的停机时间。
谢谢。
您可以使用带有 --force 标志的 docker service update 命令强制 Docker Swarm 服务更新并重新启动。这允许您触发特定服务的重新启动,而无需拆除整个堆栈。
docker service update --force <service_name>
这将迫使 Docker Swarm 更新服务,其中包括重新启动与该服务关联的容器。由于您对配置文件使用卷挂载,因此配置文件中的更改将在重新启动后反映在容器中。