git - 多容器、多存储库项目中的部署文件放在哪里?

标签 git docker docker-compose

我有一个由三个 git 存储库和应用程序组成的堆栈:

  • 前端应用
  • 后端应用
  • worker 申请

它们都与 docker-compose.yml 文件协同工作,该文件还包含部署应用程序所需的其他资源和图像。

当我部署应用程序时,我只需要推送 docker-compose.yml 文件,或者在 AWS 的情况下,它将是一个 Dockerrun.aws.json 文件。所以我的问题是......我应该把这个文件放在哪里?它不属于上述任何存储库,因为它协调了所有存储库。

我是否应该设置一个名为“The Deployment Repository”的第四个存储库来保存我的所有部署文件和配置?或者我是否从上面选择一个我决定是“我部署的 repo ”的存储库,我把它全部保存在那里?或者我是否可以将部署的副本存储在所有存储库中,以便无论我在哪个存储库上工作,我都可以部署完整的应用程序?

最佳答案

在发布这个问题几个月后,我得出了以下结论:

1。单一存储库

在某些情况下,最简单的解决方案可能是创建一个存储所有应用程序的存储库。这违背了 12 Factor Methodology由 Heroku 编写,但是如果您所做的只是管理前端和后端应用程序,它可能会为您节省大量额外的工作和 DevOps。

您的 git 存储库将是:

.git/
frontend_app/
  ...
  Dockerfile
backend_app/
  ...
  Dockerfile
deployment/
  nginx/
  docker-compose-dev.yml
  docker-compose-prod.yml

2。多存储库

如果您坚持使用多个存储库的想法,可能是因为您严格遵循最佳实践并希望分离代码,或者可能是因为您的多服务基础架构可能会膨胀到数十个或数百个存储库,我推荐以下内容:

  1. 每个应用程序都有自己的存储库、自己的 CI/CD 管道和自己的构建过程。每当更新 repo 时,它都会触发构建并创建 docker 镜像。 它不“部署”任何东西。

  2. 您有一个单独的部署存储库,其中仅包含编排系统的文件以及可能的任何 Web 服务器配置或其他部署配置。这是已部署的存储库。

  3. 每当您的部署检测到更改时,它会 pull 构建的最新镜像并更新您的应用程序。这可以由 CI/CD 管道在触发更新的第一步中完成,也可以由坐在服务器上监听更新的代理完成。

第三部分是棘手的部分,有多种方法可以解决。有多种软件程序可以帮助管理此类基础设施,例如 AWS ECS , Docker SwarmKubernetes .

关于git - 多容器、多存储库项目中的部署文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47502859/

相关文章:

Docker - Flutter Web 部署 - 无法访问站点

javascript - 如何将参数传递给 grunt 任务?

java - 如何将 Git 的 fork 存储库包含到我的 eclipse java 项目中?

git - 在 Git 中恢复已删除的分支

docker 容器抛出错误 : php_network_getaddresses: getaddrinfo failed: Name or service not known

php - Docker + Xdebug + VSCode 无法连接到客户端

docker - 将网络连接到服务

node.js - 制作用于单元测试的 git 存储库

mysql - Docker:与 mysql DB 链接失败

python-2.7 - 使用Docker Remote API运行exec时出现错误500