我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,正确的方法是什么.存储库是独立的,但要在生产中运行,一切都需要启动.
我的设置:
Git存储库后端:
后端项目导轨
docker-compose:backend(公开3000),db和redis
Git Repository Frontend
Express.js服务器
docker-compose :(暴露4200)
两者都可以独立运行,测试可以由CI执行
用于生产的Git Repository Nginx
需要连接到其他两个服务(相同的docker网络)
将请求转发给正确的服务
我已经尝试将这两个服务作为子模块包含到Nginx存储库中并使用nginx repo的docker-compose,但我对此并不满意.
您可以为要运行的每个服务创建CI构建和推送映像,并让生产环境运行所有3个容器.
然后,您的生产docker-compose.yml
将如下所示:
lb: image: nginx depends_on: - rails - express ports: 80:80 rails: image: yourorg/railsapp express: image: yourorg/expressapp
请注意,docker-compose
不建议用于生产环境; 您应该考虑使用分布式应用程序包(这仍然是一个实验性功能,将在版本1.13中发布到核心)
或者,您可以使用类似工具ansible
或bash脚本来编排容器; 只需确保您创建一个docker网络并将所有三个容器连接到它,以便他们可以找到彼此.
编辑:由于Docker v17和DAB的弃用支持Compose文件v3,对于单主机环境来说,似乎docker-compose
是运行多服务应用程序的有效方式.对于多主机/ HA /集群化方案,您可能希望将Docker Swarm用于自我管理解决方案,或者使用Docker Cloud进行更多PaaS方法.在任何情况下,我都建议你在Play-with-Docker中试用它,这是一个官方的在线沙箱,你可以在那里分出多个主机并玩一个群集群,而不需要自己开箱子.