Почему файл .env не работает в django docker?
Я работаю над проектом django docker. Я добавил .env файл, но у меня такая ошибка:
celery_1 | File "/project/core_app/__init__.py", line 5, in <module>
celery_1 | from .celery import app as celery_app
celery_1 | File "/project/core_app/celery.py", line 11, in <module>
celery_1 | from core_app.settings import INSTALLED_APPS
celery_1 | File "/project/core_app/settings.py", line 90, in <module>
celery_1 | 'NAME': os.environ['DB_NAME'],
celery_1 | File "/usr/local/lib/python3.9/os.py", line 679, in __getitem__
celery_1 | raise KeyError(key) from None
celery_1 | KeyError: 'DB_NAME'
Похоже, я правильно указал env_file в docker-compose, но ошибка говорит, что код не видит переменные окружения.
Как я могу решить эту проблему?
settings.py
import environ
import os
env = environ.Env()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['DB_NAME'],
'USER': os.environ['DB_USER'],
'PASSWORD': os.environ['DB_PASSWORD'],
'HOST': 'db',
'PORT': 5432,
}
}
.env - всего несколько конфигураций
DB_USER=postgres
DB_PASSWORD=post222
DB_NAME=lk_potok_4
DB_PORT=5444
DATABASE_URL=postgres://postgres:post222@db:5432/lk_potok_4"
docker-compose.yml -- full file https://pastebin.com/0feAg5xq
version: '3.9'
services:
django:
build: ./project # path to Dockerfile
command: sh -c "
python manage.py makemigrations
&& python manage.py migrate
&& gunicorn --bind 0.0.0.0:8000 core_app.wsgi"
volumes:
- ./project:/project
- ./project/static:/project/static
expose:
- 8000
env_file:
- .env
environment:
- DATABASE_URL=${DATABASE_URL}"
- DEBUG=1
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- DB_NAME=${DB_NAME}
db:
image: postgres:13-alpine
volumes:
- pg_data:/var/lib/postgresql/data/
expose:
- 5432
environment:
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- DB_NAME=${DB_NAME}
nginx:
...
celery:
build: ./project
command: celery -A core_app worker --loglevel=info
volumes:
- ./project:/usr/src/app
environment:
- DEBUG=1
- DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
- CELERY_BROKER=redis://redis:6379/0
- CELERY_BACKEND=redis://redis:6379/0
depends_on:
- django
- redis
...