【发布时间】:2021-09-02 23:49:07
【问题描述】:
我需要以下模板方面的帮助:
services:
nginx:
image: nginx
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx-${COMPOSE_PROJECT_NAME}.rule=Host(`fuu.bar`)"
networks:
- treafik
我的目标是创建一个我可以使用的模板。 G。在几乎零配置的搬运工中。
我认为 following variables 在 docker-compose 配置中可用,但表达式 ${COMPOSE_PROJECT_NAME} 导致一个空字符串:docker-compose config
services:
nginx:
image: nginx
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx-.rule=Host(`fuu.bar`)"
networks:
- treafik
是否有 docker-compose 提供的默认环境变量可用于环境插值?
----更新
我使用 traefik (v2) 作为反向代理。要通过 treafik 使容器可用,您需要在每个服务上定义路由器。路由器名称必须是唯一的。假设您部署了 2 个或更多堆栈上述模板。对于所有堆栈中的所有服务,路由器名称必须是唯一的。因为我是个懒人,所以我尝试简单地集成环境变量COMPOSE_PROJECT_NAME(我知道它在我的设置中已经是唯一的,因为每个堆栈都必须有一个唯一的名称)。但是在部署堆栈时该变量不可用。
当然,我可以简单地在.env文件中自己定义变量COMPOSE_PROJECT_NAME,但我希望docker提供任何默认的环境变量。
【问题讨论】:
标签: docker docker-compose environment-variables interpolation substitution