【问题标题】:Good practices for combining multiple projects in one Docker Swarm deployment?在一个 Docker Swarm 部署中组合多个项目的良好实践?
【发布时间】:2019-03-07 08:13:36
【问题描述】:

我们正在开发一个由三部分组成的应用程序:

  1. 后端 (Java EE) (A)
  2. 前端 (vuejs) (B)
  3. 管理前端 (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


【解决方案1】:

嗯,一种方法是让 3 个部署独立的管道,因此作为每个应用程序的最后一步,您只需调用特定的部署。例如后端:

stage("deploy backend") {
    steps {
        build 'deploy backend'
    }
}

然后一个单独的管道来部署所有正在做的应用程序

stage("deploy all") {
    steps {
        build 'deploy backend'
        build 'deploy frontend'
        build 'deploy admin frontend'
    }
}

悬而未决的问题是您会将docker-compose.yml 保存在哪里?

我假设自动部署仅适用于您的主人,所以我会在每个项目中保留它。您还需要额外的 Jenkins 配置文件用于部署管道 - 这意味着您将有一个简单的管道“部署后端”,指向“后端”主分支中的这个新的詹金斯配置文件。但这一切都取决于你的 gitflow。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多