这可能是重复的,因为我认为这是docker-compose的常见用例。但是,在这种特定情况下,我似乎找不到类似的问题。
我有一个包含以下两项服务的docker-compose文件:
processService:
container_name: processservice
image: mcr.microsoft.com/dotnet/core/sdk:3.1
ports:
- 5001:80
volumes:
- ./backend/packages/dotnet:/backend/packages/dotnet
- ./backend/services/processService/src:/backend/services/processService/src
working_dir: /backend/services/processService/src/ProcessService.Application
command: dotnet watch run
organizationService:
container_name: organizationservice
image: mcr.microsoft.com/dotnet/core/sdk:3.1
ports:
- 5002:80
volumes:
- ./backend/packages/dotnet:/backend/packages/dotnet
- ./backend/services/organizationService/src:/backend/services/organizationService/src
working_dir: /backend/services/organizationService/src/OrganizationService.Application
command: dotnet watch run
从撰写文件中可以看出,我对两个服务使用相同的卷装载,即./backend/packages/dotnet:/backend/packages/dotnet
。
我想知道是否有可能在“卷”部分中声明一次该卷,然后在服务之间重用它。
我试图寻找答案。我遇到的答案建议使用docker volume create foo
手动创建一个卷,然后按以下方式使用它:
...
volumes:
- foo:/backend/packages/dotnet
...
但是,这对我来说没有任何意义,因为当我在任何时候都未指定foo时,我看不出foo应该如何知道我希望它读取/写入的目录。
我尝试通读docker文档,但是找不到与创建装载特定目录的命名卷相关的任何内容。
有人对如何做到这一点有什么建议吗?
答案 0 :(得分:0)
这是docker-compose文件中的两个不同的volumes
部分:
本地(服务)
本地volumes
定位在服务部分中(就像在文件中一样),将数据量(或主机路径)映射到容器位置。
全局
全局services:
部分与volumes
部分位于同一级别,并创建数据量。
然后,这是在docker-compose文件中使用数据卷的方法:
service1:
volumes:
- vol_1:location_1
service2:
volumes:
- vol_1:location_2
volumes:
vol_1:
因此,在您的情况下,docker-compose部分应为:
processService:
container_name: processservice
image: mcr.microsoft.com/dotnet/core/sdk:3.1
ports:
- 5001:80
volumes:
- dotnet:/backend/packages/dotnet
- processService:/backend/services/processService/src
working_dir: /backend/services/processService/src/ProcessService.Application
command: dotnet watch run
organizationService:
container_name: organizationservice
image: mcr.microsoft.com/dotnet/core/sdk:3.1
ports:
- 5002:80
volumes:
- dotnet:/backend/packages/dotnet
- organizationService:/backend/services/organizationService/src
working_dir: /backend/services/organizationService/src/OrganizationService.Application
command: dotnet watch run
volumes:
dotnet:
processService:
organizationService: