由多个存储库组成的 Docker 应用程序的 Git 存储库设置

标签 git docker

给定以下结构;

├── api/                - A PHP application, to have its own repository
├── docker/             - Docker configuration for shared containers (MySQL, Nginx)
├── docker-compose.yml  - Defines all of the services
└── web-client/         - A standalone Angular application, to have its own repository

目前整个应用程序都在一个存储库中,但我希望将其拆分为单独的存储库。开发尚未开始,因此维护任何历史等都没有问题。

首先,在根级别 docker-compose 文件中定义所有服务是解决此问题的最佳方式,或者应该 apiweb -client 与自己的docker-compose 更加隔离,从而完全分开管理?如果分开,是否还有可能有一个“depends_on”另一个?

其次,管理存储库的最佳方式是什么?根级代码(docker-compose.ymldocker/)应该存在于一个存储库中,但这也取决于其他两个存储库是否存在,可能是子存储库。我为此查看了 git 子模块,但似乎父存储库必须与子存储库中的特定提交相关联,这可能会使处理多个并行功能变得困难?

最佳答案

我的建议如下:

├── api/
       |___ .git
       |___ Dockerfile
       |___ ... api src ...
├── docker/             - Docker configuration for shared containers (MySQL, Nginx)
├── docker-compose.yml  - Defines all of the services
└── web-client/
        |______ .git
        |______ Dockerfile
        |______ ... web-client src ...

每个应用程序都应该封装它的源代码和它的 Dockerfile,两者都存在于同一个 git repo 中。

然后 docker-compose.yml 文件将使用它们,类似于:

(...)
services:
  api:
    build: ./api/
(...)
  web-client:
    build: ./web-client/

这就是我通常看到的方式。

如果你想使用多个 docker-compose 文件,你可能想看看这个:https://docs.docker.com/compose/extends/

关于由多个存储库组成的 Docker 应用程序的 Git 存储库设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49918636/

相关文章:

git - Git merge 如何处理同时提交?

java - 运行docker容器 "NoClassDefFoundError"时出错

docker - 在 Alpine docker 中提取凿子

c# - 每个项目使用 GIT 时 Visual Studio 的行为是什么?

git - Perforce 相当于 git local commit

git - 有人可以解释 'git revert ...'

node.js - 容器 Node.js (Express) 后出现 "ECONNREFUSED"错误

node.js - 使用 kubernetes 部署时无法连接 gRPC

linux - 尽管确实存在,但在 Alpine Docker 容器中收到 [Not Found] 错误

git - git revert 后回滚到原始状态