保持 Docker 个容器最新

Keeping Docker Containers Current

假设我有几个 Docker 容器。每个都提供最初在容器启动时从远程 Git 存储库中提取的代码。但是,现在一些容器正在为远程 master 分支后面的代码提供服务。我想让所有这些都是最新的。

我意识到我可能可以 运行 docker exec -it [container_id] bash 然后在我的每个容器中手动 git pull ,但这似乎不是一个非常可扩展或实用的选项。

是否有现成的方法来自动化我的 Docker 容器的代码拉取? Webhooks 是解决这个问题的正确方法吗?

假设您有一个可到达的端点,您可以使用网络挂钩。我更喜欢在你的 repo 更新时构建新的 docker 图像,但是按照你的方法,你可以考虑像这样的东西:

  1. 我们将容器命名为 A、B 和 C。
  2. 设置一个新容器 W 以公开网络挂钩,并为 A、B 和 C 安装卷。您的 git 包将被克隆到这些卷中。
  3. docker run A、B 和 C 与 --volumes-from W
  4. 当 W 收到更新时,它会 git 拉取适当的包,自动更新容器看到的代码。
  5. W 可能需要根据需要向容器发送重启信号。