【发布时间】:2018-04-14 03:59:03
【问题描述】:
我有几个想要通过 docker-compose 管理的 git 存储库。我还希望 docker-compose 所在的项目是一个 git repo。所以我有以下组织:
UI-Repo
--> .git
--> Dockerfile
Server-Repo
--> .git
--> Dockerfile
Local-Development-Repo
--> .git
--> docker-compose.yml
不幸的是,由于 Docker 的限制,我似乎无法访问 UI-Repo 和 Server-Repo dockerfile。在 Local-Development-Repo 中拥有 UI-Repo 和 Server-Repo 的符号链接也不起作用。所以我可以想到两个选择。
-
Git 子模块
- 这种方法的缺点是我需要复制 package.json 并在我的 dockerfile 中执行
npm install,因为node_modules在我的 .gitignore 上。我希望这纯粹是为了开发,理想情况下,应该只使用卷而不是在 docker 容器内安装依赖项。
- 这种方法的缺点是我需要复制 package.json 并在我的 dockerfile 中执行
-
将 UI-Repo 和 Server-Repo 放在父目录中,其中包含 docker-compose.yml 文件。
- 这种方法的缺点是我也希望通过 Git 跟踪这个父级。我不认为在包含两个 git repo 的父目录中有 .git 会起作用。
建立具有多个独立 git 存储库的微服务架构并使用 docker-compose 管理这些项目以进行本地开发的建议做法是什么?
【问题讨论】:
-
如果您希望在您的 docker-compose 中引用其他存储库,为什么需要访问他们的 Dockerfile?您在他们自己的仓库中创建其他 docker 镜像的镜像,并且在您的 docker-compose 中,您只需引用它们。我是否错过了您的用例?
-
@Rash - 我认为 docker-compose 用于更好地管理项目中的许多不同服务,以便您可以简单地执行
docker-compose up来运行服务器和 UI 服务(没有每次都需要构建和运行每个仓库)。我想为每个项目利用 docker-compose 中的“音量”。这样,如果我在开发过程中更改 UI 上的某些内容,正在运行的服务可以自动检测到它(无需重建和重新运行图像)。 -
因此,您只需要一个用于所有 UI 项目的基本 dockerfile,其中实际文件将通过 volume 选项加载。单独构建这些 dockerfile,并在您的 docker-compose 中引用这些构建,并将数据挂载到这些构建。您不需要访问其他项目的 dockerfile。
-
你的问题解决了吗?
标签: node.js docker-compose microservices