Секретный ключ docker-compose и django

Я создал свое приложение postgres и django, используя следующее

version: "3.8"

services:
  django:
    build: .
    container_name: django
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres
    container_name: pgdb
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

Когда я проверяю docker-desktop, у меня есть 2 контейнера docker, "django" и "pgdb".

Когда я проверяю django, там написано

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

Изначально на машине windows 10 я сохранил секретный ключ в переменной windows. Как собрать docker-compose, чтобы он получил секретный ключ?

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')

Вам нужно будет создать .env файл с SECRET_KEY. В файле django_secrets.env вы можете хранить следующим образом: SECRET_KEY=my_secret_key

Затем в файле docker-compose.yml вы можете указать файл django_secrets.env:

version: "3.8"

services:
  django:
    build: .
    container_name: django
    command: python manage.py runserver 0.0.0.0:8000
    env_file:
        - ./django_secrets.env
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres
    container_name: pgdb
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

Затем вы можете получить значение в файле settings.py следующим образом:

SECRET_KEY = os.environ.get("SECRET_KEY", 'my_default_secret_key')

Вы можете разместить файл django_secrets.env по любому пути, вам просто нужно указать путь в файле docker-compose.yml. Также вы можете назвать его так, как вам нравится

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