未设置 Docker-compose 环境变量

mas*_*cai 9 python django docker docker-compose

项目树

/backend
  .env.dev
  docker-compose-dev.yml
  /project
Run Code Online (Sandbox Code Playgroud)

我有以下警告:

docker-compose  -f docker-compose-dev.yml up --build # i am in the /backend directory

WARNING: The DB_USER variable is not set. Defaulting to a blank string.
WARNING: The DB_PASSWORD variable is not set. Defaulting to a blank string.
WARNING: The DB_NAME variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)

这意味着 docker compose 看不到我的环境文件。我该如何修复它?

docker-compose-dev.yml

services:
  django:
    build: ./project # path to Dockerfile
    command: sh -c " 
      sleep 3 && gunicorn -w 8 --bind 0.0.0.0:8800 core_app.wsgi"
    volumes:
      - ./project:/project
      - ./project/static:/project/static
      - ./project/media:/project/media
      - ./project/logs:/project/logs
    expose:
      - 8800
    env_file:
      - ./.env.dev
    depends_on:
      - db

  
  db:
    image: postgres:13-alpine
    volumes:
      - pg_data:/var/lib/postgresql/data/
    expose: 
      - 5432
    ports:
      - "5435:5432"
    env_file:
      - ./.env.dev
    environment:
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_DB=${DB_NAME}
          .......
Run Code Online (Sandbox Code Playgroud)

如何启用 env 文件?

PS值在文件中设置.env.dev

DB_NAME=db_dev
DB_USER=postgres
DB_PASSWORD=passsss132132
ENV_TYPE=DEV
Run Code Online (Sandbox Code Playgroud)

更新 发现这种方式有效

docker-compose -f docker-compose-dev.yml  --env-file=.env.dev up 
Run Code Online (Sandbox Code Playgroud)

Bra*_*ndt 6

如果投诉来自docker (compose) 本身,请尝试:

  1. 重命名./.env.dev为简单的.env.dev
  2. 如果还没有,请重命名.env.dev.env(默认)并env_file从撰写中删除该条目。这肯定会起作用,然后你可以回去用env_file([1])来调查这个问题。

更新

现在我自己也面临着同样的问题——在类似的情况下试图将我的 JupyterHub的变量与注定要分配给 Jupyter Notebooks 的变量分开——我深入挖掘以更好地理解 Compose.env和的作用env_file:

正如问题中已经告知的,使用选项--env-file可以解决问题。这是在名称与(默认)不同的文件中定义docker-compose (yaml)环境变量的正确答案.env

env_file中的选项适用docker-compose.yaml于正在运行的容器:只有容器才能看到这些变量。

我最近发布了类似问题的类似答案:

[1] https://docs.docker.com/compose/env-file/