如何在 docker-compose 下强制重新创建并仅启动一个容器?

How to force-recreate and start only one container under docker-compose?

在我进行任何代码更改后,我的典型开发步骤是:

  1. 更改代码并构建 jar 文件
  2. 构建 docker 使用 jar 文件的图像
  3. 终止当前的“docker-compose up”命令。
  4. 运行 “docker-再次合成”。

我的 docker-compose 文件有五个服务。在第 3 步,所有容器都关闭。理想情况下,我只需要重新 运行 我的应用程序容器。

我正在寻找一种在批处理脚本中执行以下操作的方法:

  1. 关闭应用程序容器。其他四个容器应该继续 运行.
  2. 构建一个新的 docker 图像
  3. 强制 docker-compose 重新创建我的应用程序容器并启动它。

对于第 1 步,看起来我可以使用“docker-compose kill myappname。”

第 2 步也很简单。

我想知道如何完成第 3 步。谢谢。

您不需要显式停止当前容器。

如果您的图像已更改,docker compose 将识别它并在您再次 运行 up 命令时重新创建您的容器。

因此,重建您的映像 运行 docker compose up

如果您使用 compose 构建镜像,请添加 --build 标志让它重建您的镜像,之后容器也会重新创建。

您还可以将特定服务的名称添加到您的 up 命令,即 docker compose up -d --build app

如果图像没有变化,您可以添加--force-recreate标志。