我有一个用于单存储库的docker compose文件。 我有多个使用相同代码的服务, 所有共享代码都在以下文件夹结构中:
cols
当我在开发中(从docker compose)运行服务时,我正在使用监视程序,监视* root
|-- * shared
- | -- * sharedA
| | -- src
| -
| -- * sharedB
- | -- src
-
,shared/sharedA/src
我的docker compose文件看起来像这样
shared/sharedB/src
我的目标是拥有
的卷声明version: '3'
services:
service_a:
build:
context: .
dockerfile: 'services/serviceA/Dockerfile'
volumes:
- ./services/serviceA/src/:/usr/src/app/services/serviceA/src
- ./shared/sharedA/src/:/usr/src/app/shared/sharedA/src
- ./shared/sharedB/src/:/usr/src/app/shared/sharedB/src
service_b:
build:
context: .
dockerfile: 'services/serviceB/Dockerfile'
volumes:
- ./services/serviceB/src/:/usr/src/app/services/serviceB/src
- ./shared/sharedA/src/:/usr/src/app/shared/sharedA/src
- ./shared/sharedB/src/:/usr/src/app/shared/sharedB/src
在一个中心位置,使我可以一次定义它们,并将它们导入/连接到每个服务中,
尝试通过本指南+ docker compose docs
http://blog.code4hire.com/2018/06/define-named-volume-with-host-mount-in-the-docker-compose-file/
进行了一些改动来实现它,但是很遗憾,我无法使其工作。.
我不确定是否有可能,但是有关docker compose卷的文档并没有真正的帮助,所以我认为也许这里有人已经处理过类似的东西
答案 0 :(得分:0)
您可以使用命名卷:
version: '3'
services:
service_a:
build:
context: .
dockerfile: 'services/serviceA/Dockerfile'
volumes:
- sharedA:/usr/src/app/shared/sharedA/src
- sharedB:/usr/src/app/shared/sharedB/src
service_b:
build:
context: .
dockerfile: 'services/serviceB/Dockerfile'
volumes:
- sharedA:/usr/src/app/shared/sharedA/src
- sharedB:/usr/src/app/shared/sharedB/src
volumes:
sharedA:
driver: local
driver_opts:
type: none
device: ./shared/sharedA/src/
o: bind
sharedB:
driver: local
driver_opts:
type: none
device: ./shared/sharedB/src/
o: bind