git pull、docker-compose build 和 docker-compose up -da 是在空机上部署完整解决方案的好方法吗

Che*_*eng 3 docker docker-compose

最近,我们刚刚完成了使用 Docker 的 Web 应用程序解决方案。

https://github.com/yccheok/celery-hello-world/tree/nginx(实际解决方案托管在私有存储库中。这个例子只是快速浏览一下我们的项目结构的样子)

我们计划在其上部署时购买 1 台空 Linux 机器。未来我们可能会购买更多机器,但以目前的流量,1 台机器就足够了。

我在单台空机上部署的计划是

git pull <from private code repository>
docker-compose build
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

由于我们将在不久的将来部署到多台机器上,我想知道,这是将 docker 应用程序部署到新的空机器上的常见做法吗?

有什么我们可以从https://hub.docker.com/使用而无需我们git pull在部署阶段执行的吗?

Ita*_*ayB 7

您不想git pull在每台机器上执行- 您的直觉是正确的。

相反,您想使用远程 docker 注册表(例如作为 docker hub)。

所以正确的流程,每次你的源代码(git repo)被改变时:

  1. git pull 来自所有相关的回购。
  2. docker-compose build 构建所有相关图像。
  3. docker-compose push 将所有图像(差异)推送到远程注册表。
  4. docker-compose pull 在您的生产机器中,获取最新的更新图像。
  5. docker-compose up 启动所有容器。

前 3 个步骤应该在您的 CI 机器中完成(例如,作为 jenkins 工作)。生产机器中的步骤 4-5。

编辑:要考虑的一件事。我认为通过 docker-compose 构建很糟糕。考虑直接通过docker build -f Dockerfile -t repo/image:tag .并在docker-compose指定图像名称中构建。