【发布时间】:2019-03-07 08:13:36
【问题描述】:
我们正在开发一个由三部分组成的应用程序:
- 后端 (Java EE) (A)
- 前端 (vuejs) (B)
- 管理前端 (React) (C)
以上每一项都适用于现状:
- 在自己的 Git 存储库中维护
- 有自己的
docker-compose.yml - 有自己的
Jenkinsfile
每个组件的Jenkinsfile 包括一个“部署”阶段,基本上只运行以下命令:
docker stack deploy -c docker-compose.yml $stackName.
然而,这种方法并不“正确”。我们正在努力解决一些问题,例如:
- 我们如何部署“完整的应用程序”?第一个猜测是使用单独的
docker-compose.yml,其中包含 A、B 和 C 的服务。 - 但是我们将把这个文件保存在哪里呢?绝对不在其中一个 Git 存储库中,因为它不属于那里。第四次回购?
- 如果上述 A、B、C 的存储库之一发生更改,我们如何开始部署这个组合的 docker compose 文件?
我们知道这些问题可能不是很具体,但它们表明我们对此主题感到困惑。
你有什么好的做法来编排这三个服务组件吗?
【问题讨论】:
-
使用 Kubernetes,我在单独的 repo 上获得了很好的体验,每个服务都将使用最新的构建版本更新 Kubernetes 文件。 compose 应该是一样的。对于生产,您可以使用拉取请求来获得更加手动的工作流程。 Kelsey Hightower 有一段 youtube 视频解释了这个设置。并且在他的github中有一些示例项目。
标签: docker jenkins docker-compose jenkins-pipeline docker-swarm