我想通过docker-compose管理几个git repo。我还希望docker-compose所在的项目是一个git repo。所以我有以下组织:
UI-Repo
--> .git
--> Dockerfile
Server-Repo
--> .git
--> Dockerfile
Local-Development-Repo
--> .git
--> docker-compose.yml
不幸的是,由于Docker的限制,我似乎无法访问UI-Repo和Server-Repo dockerfiles。在Local-Development-Repo中使用UI-Repo和Server-Repo的sym链接也不起作用。所以我可以想到两个选择。
Git子模块
npm install
,因为node_modules
在我的.gitignore上。我希望这纯粹用于开发,理想情况下,应该只使用卷而不是在docker容器中安装依赖项。 在父目录中设置UI-Repo和Server-Repo,其中包含docker-compose.yml文件。
建立具有多个独立git repos的微服务架构的建议做法是什么,并使用docker-compose管理这些项目以进行本地开发?
答案 0 :(得分:0)
我最终做了类似的事情:
Parent-Folder
- docker-compose.yml (sym linked to Local-Development-Repo/docker-compose.yml)
- Local-Development-Repo
- docker-compose.yml
- UI-Repo
- Server-Repo
这样,我可以跟踪docker-compose.yml,同时可以通过父文件夹中的docker-compose-up
启动所有服务。
答案 1 :(得分:-1)
您无需访问其他UI项目的Dockerfile
。
对于所有UI项目,在他们自己的项目中本地构建他们的图像。
然后将这些图像引用到您的docker-compose文件中,如下所示。
在引用时,您可以在docker中安装相应的代码库。 这样,即使您更改了UI代码,也无需再次重建docker镜像。
version: "2"
services:
UIProjectA:
image: ui_project_A_local_build:0.0.1
container_name: ui_project_A_local_build
ports:
- "8081:8080"
volumes:
- /path/to/local/folder/in/project/A:/path/to/docker/folder
UIProjectB:
image: ui_project_B_local_build:0.0.1
container_name: ui_project_B_local_build
ports:
- "8082:8080"
volumes:
- /path/to/local/folder/in/project/B:/path/to/docker/folder
答案 2 :(得分:-1)
我怀疑问题只出在你的docker-compose文件中。我有相同的目录结构,它工作正常。您只需将构建上下文设置为repo目录,并从Local-Development-Repo中运行docker-compose。
version: '2.1'
services:
ui:
image: ui
container_name: ui
build:
context: ../UI-Repo
server:
build:
context: ../Server-Repo
image: server
container_name: server