Переменная окружения Docker-compose не установлена
Дерево проекта
/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?
P.S.
Значения задаются в файле .env.dev
DB_NAME=db_dev
DB_USER=postgres
DB_PASSWORD=passsss132132
ENV_TYPE=DEV
UPDATE Обнаружил, что этот способ работает
docker-compose -f docker-compose-dev.yml --env-file=.env.dev up
Если жалоба исходит от самого docker (compose), попробуйте:
- переименуйте
./.env.dev
в просто.env.dev
; - если еще нет, переименуйте
.env.dev
в.env
(по умолчанию) и удалите записьenv_file
из вашего состава. Это обязательно сработает, после чего вы сможете вернуться к исследованию проблемы сenv_file
.