将多个项目合并到一个 Docker Swarm 部署中的良好做法?

Good practices for combining multiple projects in one Docker Swarm deployment?

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

  1. 后端(Java EE)(A)
  2. 前端 (vuejs) (B)
  3. 管理前端 (React) (C)

以上每一项都适用于现状:

每个组件的 Jenkinsfile 包含一个 "Deploy" 阶段,基本上只运行以下命令:

docker stack deploy -c docker-compose.yml $stackName.

然而这种方法感觉不到 "right"。我们正在努力解决一些问题,例如:

我们知道这些问题可能不是很具体,但它们显示了我们对此主题的困惑。

对于如何编排这三个服务组件,您有什么好的做法吗?

好吧,一种方法是将 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 配置文件 - 这意味着您将有一个简单的管道 'deploy backend' 指向 'backend' 主分支中的这个新的 jenkins 配置文件。但这一切都取决于你的 gitflow。