Docker Compose File无法获取.env变量

时间:2018-09-06 18:02:36

标签: docker docker-compose environment-variables dockerfile traefik

我正在使用docker-compose运行traefik容器。此容器的域应由环境文件设置,但是每次启动此服务时,它都会显示:

警告:未设置DOMAIN变量。默认为空字符串

我的撰写文件设置:

version: '3.5'

networks:
  frontend:
    name: frontend
  backend:
    name: backend

services:
  Traefik:
    image: traefik:latest
    command: --api --docker --acme.email="test@test.de"
    restart: always
    container_name: Traefik
    networks:
      - backend
      - frontend
    env_file: ./env.env
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik/traefik.toml:/traefik.toml
      - ./traefik/acme.json:/acme.json
    ports:
      - "80:80"
      - "443:443"
    labels:
      - "traefik.docker.network=frontend"
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:traefik.${DOMAIN}"
      - "traefik.port=8080"
      - "traefik.protocol=http"

我的env.env文件设置:

DOMAIN=fiture.de

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

Bus New_Price   Rank_Order  Rank_duplicates
0   abc1    335  1          2
1   abc2    338  2          1
2   abc3    141  3          3
3   abc4    335  4          2

未加载文件 env_file: ./env.env 来分析组成文件,而是已加载文件env.env以在正在运行的容器内添加环境变量。在docker处理上述指令时,yaml文件已经加载,变量已扩展。

如果您使用docker-compose在单个节点上部署容器,则可以重命名文件.env,然后docker-compose将在解析组成文件之前从该文件加载变量。

如果使用docker stack deploy进行部署,则需要将环境变量自己导入到Shell中。在bash中执行此操作的示例如下:

set -a && . ./env.env && set +a && docker stack deploy ...