Как автоматически создавать супер пользователя django при запуске docker-compose?

Для автоматического создания суперпользователя Django при запуске docker-compose можно использовать специальное пользовательское скриптовое приложение или утилиту, которая будет выполняться при инициализации контейнера Django.

Вот примерный алгоритм того, как это можно сделать:

1. Создайте файл create_superuser.py в директории, которую вы будете монтировать внутрь контейнера Django. В этом файле вы определите функцию, которая будет создавать суперпользователя Django.

2. В файле docker-compose.yml добавьте раздел command для конфигурации контейнера Django. Укажите команду для выполнения пользовательского скрипта при запуске контейнера:

version: '3'
services:
  django:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./create_superuser.py:/code/create_superuser.py
    command: >
      sh -c "python manage.py migrate &&
             python manage.py shell -c 'from create_superuser import create_superuser; create_superuser()'"

В этом примере ./create_superuser.py - это путь к вашему скрипту create_superuser.py на хостовой машине, а /code/create_superuser.py - это путь к этому скрипту внутри контейнера Django.

3. В файле create_superuser.py определите функцию create_superuser(), которая будет создавать суперпользователя Django. Вот пример реализации этой функции:

from django.contrib.auth import get_user_model

def create_superuser():
    User = get_user_model()
    
    if not User.objects.filter(username='admin').exists():
        User.objects.create_superuser('admin', '[email protected]', 'admin')

В этом примере мы используем функцию get_user_model() для получения модели пользователя Django, а затем проверяем, существует ли уже суперпользователь с именем 'admin'. Если суперпользователь не существует, мы создаем его.

4. Запустите docker-compose up для создания и запуска контейнеров. При запуске контейнера Django будет выполнен ваш пользовательский скрипт, который автоматически создаст суперпользователя Django.

В результате, при каждом запуске docker-compose, будет создаваться суперпользователь Django автоматически. Это может быть полезно для инициализации нового окружения или для автоматического создания суперпользователя в процессе развертывания приложения.