【问题标题】:docker-compose - issue restarting single servicedocker-compose - 重新启动单个服务的问题
【发布时间】:2019-02-13 04:12:10
【问题描述】:

我正在使用 docker-compose 进行开发项目。我的 docker compose 文件中定义了 6 个服务。每当我进行更改时,我一直在使用以下脚本来重建图像。

#!/bin/bash
# file: rebuild.sh
docker-compose down
docker-compose build
docker-compose up

我正在寻找一种方法来减少构建时间,因为构建和重新启动所有服务似乎没有必要,因为我通常只更改一个模块。我在 docker-compose 文档中看到,您可以通过在例如之后指定服务名称来为单个服务运行命令。 docker-compose build myservice.

在另一个终端窗口中,我尝试了docker-compose build myservice && docker-compose restart myservice,而另一个./rebuild.sh 命令在原始终端中保持打开状态。在./rebuild.sh 终端窗口中,我看到所有初始化消息都重新打印到标准输出,所以我知道它正在重新启动该服务,但代码更改不存在。我究竟做错了什么?我只想重建并重新启动一个服务。

【问题讨论】:

  • 您重建图像以向容器提供数据?你为什么不挂载卷呢?
  • 我知道绑定卷,您可以在其中指向您的源代码目录,但对于简单的项目,我只想知道是否有一种简单的方法来重建/重新启动单个服务。尽量不要太复杂。
  • 您是否考虑过在您的重建脚本中使用参数? ./rebuild.sh myservice 之类的东西。如果你想这样做,你可以使用 $1 变量来读取作为参数接收的服务的名称。
  • docker-compose up 和 down 命令不使用服务名称作为参数。这就是我尝试使用 docker-compose restart 的原因。我也试过 docker-compose stop/start 但它实际上与重新启动相同。
  • 试试 docker-compose up -d --force-recreate --build myservice 。请注意,-d 用于分离模式,-d 用于强制重新创建,即使您的代码没有更改,-build 用于在启动之前构建您的图像,至少是您的服务名称。在此处阅读更多信息docs.docker.com/compose/reference/up

标签: docker-compose


【解决方案1】:

试试:

docker-compose up -d --force-recreate --build myservice

请注意: -d 用于分离模式, -force-recreate 将重新创建容器,即使您的代码没有更改, -build 用于在启动容器之前构建图像。 至少是您的服务的名称。

看看here

【讨论】:

    猜你喜欢
    • 2018-12-16
    • 2016-11-17
    • 2018-05-05
    • 2020-06-30
    • 2019-03-03
    • 2019-02-13
    • 2022-07-06
    • 2020-02-16
    • 2018-03-29
    相关资源
    最近更新 更多