使用docker-compose和多个存储库

时间:2017-01-19 00:16:29

标签: docker docker-compose microservices

我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,正确的方法是什么。存储库是独立的,但要在生产中运行,一切都需要启动。

我的设置:

  • Git Repository后端:
    • Backend Project Rails
    • docker-compose:backend(公开3000),db和redis
  • Git Repository Frontend
    • Express.js服务器
    • docker-compose :(公开4200)

两者都可以独立运行,测试可以由CI执行

  • Git Repository Nginx for Production
    • 需要连接其他两个服务(相同的docker网络)
    • 将请求转发给正确的服务

我已经尝试将这两个服务作为子模块包含到Nginx存储库中并使用nginx存储库的docker-compose,但我对此并不满意。

1 个答案:

答案 0 :(得分:13)

您可以为要运行的每项服务构建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不建议用于生产环境;您应该考虑使用Distributed Application Bundles(这仍然是一个实验性功能,将在版本1.13中发布到核心)

或者,您可以使用ansible或bash脚本等工具来编排容器;只需确保创建一个docker网络并将所有三个容器连接到它,以便他们可以找到彼此。

编辑:由于Docker v17和DAB的弃用支持Compose file v3,似乎对于单主机环境,docker-compose是运行多个的有效方式服务应用。对于多主机/ HA /群集方案,您可能需要查看Docker Swarm以获取自我管理的解决方案,或Docker Cloud查看更多PaaS方法。无论如何,我建议你在官方的在线沙箱Play-with-Docker中进行试用,在沙盒中你可以分出多个主机并玩一个群集群,而不需要自己开箱子。