无需停机即可在 Docker Compose 堆栈中部署新映像

gri*_*edj 6 high-availability docker docker-compose

我们有一个多容器应用程序,它使用微服务架构,在 Docker Compose 中运行。

例如,当我对 Web 应用程序进行代码更改时,我需要使用新代码重建图像,然后在我的撰写堆栈中再次运行它,而无需任何停机时间。

这是我们正在使用的当前事件序列:

  1. 更改应用程序代码
  2. 重建镜像
  3. 推送图像(到 docker hub)
  4. docker-compose down
  5. docker-compose up

运行后docker-compose down,所有应用程序都关闭。然后docker-compose up将整个堆栈带回来。

有没有一种方法可以在 Docker Compose 中重新部署单个镜像而不会出现任何停机时间和整个应用程序堆栈?

Rob*_*ert 5

你可以避免同时放下所有东西 ( docker-compose down),就像这样:

docker-compose pull --parallel
docker-compose up --force-recreate <specific-service-name1>
Run Code Online (Sandbox Code Playgroud)

这将拉取 & 停止 & 重新创建(运行)您的<specific-service-name1>容器,并且不会接触任何其他容器。
稍后您可以部署其余的:

docker-compose up --force-recreate <specific-service-name2>
docker-compose up --force-recreate <specific-service-name3>
Run Code Online (Sandbox Code Playgroud)