在docker-compose.yaml中,是否有一种方法可以引用服务名称(web、数据库),以便在下面的代码中,将卷创建为web的/store/web
和数据库的/store/database
?
---
version: '2'
services:
web:
volumes:
- /store/${reference_service_name_above}
database:
volumes:
- /store/${reference_service_name_above}
docker compose文档没有提供这一点。
您可能希望使用在堆栈文件中创建卷的通用模式,以便在容器中使用。
version: "2"
services:
web:
volumes:
- web-logs:/var/log/web
volumes:
web-logs:
external: true
https://docs.docker.com/compose/swarm/
https://docs.docker.com/compose/compose-file/#variable-替代https://docs.docker.com/compose/compose-file/#volumes-卷驱动程序
我想您可以使用变量COMPOSE_PROJECT_NAME
:https://docs.docker.com/compose/reference/envvars/#compose_project_name
设置项目名称。该值与服务名称一起在启动时预先添加到容器中。例如,如果您的项目名称为
myapp
,并且它包括两个服务db
和web
,则Compose将分别启动名为myapp_db_1
和myapp_web_1
的容器。
我的答案是提取docker-compose images
。
docker-compose images | tail -n +3 | awk '{print $2}' | sed s/.*_//
此命令更改此返回
$ docker-compose images
Container Repository Tag Image Id Size
----------------------------------------------------------------------
mytool_web_1 mytool_web latest e51243243b8c 782 MB
对此;
web
注意:我没有在一个有多个服务的yml上测试它。