我们正在开发一个包含三个部分的应用程序:
以上情况均适用于现状:
docker-compose.yml
Jenkinsfile
每个组件的Jenkinsfile
包括一个“部署”阶段,该阶段基本上只运行以下命令:
docker stack deploy -c docker-compose.yml $stackName
。
但是,这种方法并不感觉“正确”。我们正在努力解决以下问题:
docker-compose.yml
,其中包含A,B和C的服务。我们知道这些问题可能不是很具体,但是它们显示出我们对该主题的困惑。
您有没有很好的做法来组织这三个服务组件?
答案 0 :(得分:2)
好吧,一种方法是使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配置文件-这意味着您将在“后端”的master分支中有一个指向该新jenkins配置文件的简单管道“部署后端”。但这一切都取决于您的gitflow。