使用docker-compose与多个存储库
我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,什么是正确的方法。 版本库是独立的,但要运行在生产环境中,一切都需要启动。
我的设置:
- Git存储库后端:
- 后端项目的Rails
- docker-compose:后端(公开3000),db和redis
- Git仓库前端
- Express.js服务器
- docker-compose :(揭露4200)
两者都可以独立运行,testing可以由CI执行
- Git仓库Nginx的生产
- 需要连接到其他两个服务(同一个dockernetworking)
- 将请求转发给正确的服务
我已经尝试将这两个服务作为子模块包含到Nginx存储库中,并使用nginx回购的docker-compose,但我并不满意。
您可以让CI创build并为每个要运行的服务推送映像,并让生产环境运行全部3个容器。
然后,您的生产docker-compose.yml
将如下所示:
lb: image: nginx depends_on: - rails - express ports: 80:80 rails: image: yourorg/railsapp express: image: yourorg/expressapp
需要注意的是, docker-compose
不build议用于生产环境。你应该看看使用分布式应用程序包 (这是一个实验性的function,将在1.13版本发布到核心)
或者,你可以用一个像ansible
或bash脚本的工具来编排你的容器; 只要确保你创build了一个dockernetworking,并将所有的三个容器连接到它,以便他们可以find对方。
编辑:自从Docker v17和弃用DAB s转而使用Compose文件v3之后 ,似乎对于单主机环境, docker-compose
是运行多服务应用程序的有效方式。 对于多主机/ HA /集群化scheme,您可能需要考虑Docker Swarm作为自我pipe理解决scheme,或者Docker Cloud作为更多PaaS方法。 无论如何,我build议您在Play-with-Docker (官方在线沙盒)中尝试一下,在这个官方networking沙盒中,您可以分离出多个主机,并且可以随时随地使用swarm群集,而无需拆分自己的盒子。