Для автоматического создания суперпользователя 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 автоматически. Это может быть полезно для инициализации нового окружения или для автоматического создания суперпользователя в процессе развертывания приложения.