【问题标题】:Docker-compose environment variable is not set未设置 Docker-compose 环境变量
【发布时间】:2022-11-10 23:11:48
【问题描述】:

项目树

/backend
  .env.dev
  docker-compose-dev.yml
  /project

我有以下警告:

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.

这意味着 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}
          .......

如何启用 env 文件?

附言 值在文件.env.dev 中设置

DB_NAME=db_dev
DB_USER=postgres
DB_PASSWORD=passsss132132
ENV_TYPE=DEV

更新发现这种方法有效

docker-compose -f docker-compose-dev.yml  --env-file=.env.dev up 

【问题讨论】:

  • 撰写文件中的数据库容器在哪里?

标签: python django docker docker-compose


【解决方案1】:

如果投诉来自码头工人(撰写)本身,尝试:

  1. ./.env.dev 重命名为.env.dev
  2. 如果还没有,请将 .env.dev 重命名为 .env(默认)并从您的撰写中删除 env_file 条目。这肯定会奏效,然后您可以使用env_file 回去调查问题。

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

【讨论】:

  • 我需要两个 .env 文件(一个用于开发,一个用于生产)
  • 正确的。这是一个很好的做法。我的建议“2”仅用于测试目的。如果你想真正了解发生了什么。
猜你喜欢
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 2020-02-25
  • 2019-09-30
  • 1970-01-01
相关资源
最近更新 更多