gpt4 book ai didi

docker - 将 docker-compose 与多个存储库一起使用

转载 作者:IT老高 更新时间:2023-10-28 12:39:30 26 4
gpt4 key购买 nike

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

我的设置:

  • Git 存储库后端:
    • 后端项目 Rails
    • docker-compose:后端(暴露 3000)、db 和 redis
  • Git 存储库前端
    • Express.js 服务器
    • docker-compose: (暴露 4200)

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

  • 用于生产的 Git 存储库 Nginx
    • 需要连接到其他两个服务(同一个 docker 网络)
    • 将请求转发到正确的服务

我已经尝试将这两个服务作为子模块包含到 Nginx 存储库中,并使用 nginx 存储库的 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 不推荐用于生产环境;您应该考虑使用 Distributed Application Bundles (这仍然是一个实验性功能,将在 1.13 版本中发布到核心)

或者,您可以使用 ansible 或 bash 脚本之类的工具来编排容器;只要确保你创建了一个 docker 网络并将所有三个容器都附加到它上面,这样它们就可以找到彼此。

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

关于docker - 将 docker-compose 与多个存储库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com