【问题标题】:Git repository setup for a Docker application consisting of multiple repositories由多个存储库组成的 Docker 应用程序的 Git 存储库设置
【发布时间】:2018-04-19 19:48:18
【问题描述】:

给定以下结构;

├── 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 子模块,但似乎父存储库必须与子存储库中的特定提交相关联,这可能会使处理多个并行功能变得困难?

【问题讨论】:

  • 严重否决票?
  • 这么多 -ve 票
  • 您正在尝试解决好问题。我不明白为什么人们会否决这样的问题。无论如何,我可以建议你 2 不同的解决方案。 1-您可以忽略 docker 存储库中的 web-client 和 api 目录。并分别克隆其他存储库。 2-没有测试它,但你可以从它们各自的目录中对 api 和 web-client 目录进行符号链接。 (再次忽略它们)
  • 这确实是个好问题。想象一下那些没有- 标志的选票。

标签: git docker


【解决方案1】:

我的建议如下:

├── 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-compose.yml 和共享的 docker/ 目录,基本上以 3 个存储库结束开发人员只需克隆到一个即可工作。
  • 老问题了,但是你的docker/ 目录中有什么?
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
相关资源
最近更新 更多