Почему файл .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

  ...
Вернуться на верх