如何在 docker-compose 下强制重新创建并仅启动一个容器?
How to force-recreate and start only one container under docker-compose?
在我进行任何代码更改后,我的典型开发步骤是:
- 更改代码并构建 jar 文件
- 构建 docker 使用 jar 文件的图像
- 终止当前的“docker-compose up”命令。
- 运行 “docker-再次合成”。
我的 docker-compose 文件有五个服务。在第 3 步,所有容器都关闭。理想情况下,我只需要重新 运行 我的应用程序容器。
我正在寻找一种在批处理脚本中执行以下操作的方法:
- 关闭应用程序容器。其他四个容器应该继续 运行.
- 构建一个新的 docker 图像
- 强制 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
标志。
在我进行任何代码更改后,我的典型开发步骤是:
- 更改代码并构建 jar 文件
- 构建 docker 使用 jar 文件的图像
- 终止当前的“docker-compose up”命令。
- 运行 “docker-再次合成”。
我的 docker-compose 文件有五个服务。在第 3 步,所有容器都关闭。理想情况下,我只需要重新 运行 我的应用程序容器。
我正在寻找一种在批处理脚本中执行以下操作的方法:
- 关闭应用程序容器。其他四个容器应该继续 运行.
- 构建一个新的 docker 图像
- 强制 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
标志。