我可以引用服务名称docker-compose.yml吗



在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,并且它包括两个服务dbweb,则Compose将分别启动名为myapp_db_1myapp_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上测试它。

最新更新