首页 文章

使用docker-compose和多个存储库

提问于
浏览
16

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

我的设置:

  • Git存储库后端:

  • 后端项目导轨

  • docker-compose:backend(公开3000),db和redis

  • Git Repository Frontend

  • Express.js服务器

  • docker-compose :(暴露4200)

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

  • Git Repository Nginx for Production

  • 需要连接其他两个服务(相同的docker网络)

  • 将请求转发给正确的服务

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

1 回答

  • 12

    您可以为要运行的每个服务创建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 file v3,似乎对于单主机环境, docker-compose 是运行多服务应用程序的有效方式 . 对于多主机/ HA /集群化方案,您可能需要查看Docker Swarm以获取自我管理的解决方案,或者Docker Cloud以获取更多PaaS方法 . 无论如何,我建议你在官方的在线沙箱_2438759中进行试用,在那里你可以分出多个主机并玩一个群集群,而不需要自己开箱子 .

相关问题