taxicab33
@taxicab33
Python разработчик | Django

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

Необходимо автоматически создавать админа с email и password

docker-compose.yaml:

version: "3.9"

services:
redis:
image: redis
restart: always
env_file:
- .app_env

servis_db:
image: postgres
container_name: servis_db
volumes:
- pg_data:/var/lib/postgresql/data/
env_file:
- .app_env

webapp:
build: app
command: sh -c "python manage.py makemigrations
&& python manage.py migrate
&& python manage.py collectstatic --noinput
&& python manage.py runserver 0.0.0.0:8000"
volumes:
- ./project:/project
- static_data:/project/static
ports:
- "8000:8000"
depends_on:
- servis_db
env_file:
- .app_env

celery:
build: app
command: sh -c "celery -A app worker -l INFO"
depends_on:
- redis
env_file:
- .app_env

volumes:
static_data:
pg_data:
  • Вопрос задан
  • 418 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Добавить в перечень команд где-то после python manage.py migrate что-то вроде этого:
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'admin@myproject.com', 'password')" | python manage.py shell


Либо добавить в management commands подобный код, обозвав к примеру add_admin:

...
        username = os.getenv('ADMIN_USER')
        password = os.getenv('ADMIN_PASSWORD')

        user = get_user_model().objects.filter(username=username).first()
        if not user:
            get_user_model().objects.create_superuser(username=username, password=password, email='')


и тогда просто добавить команду
...
&& python manage.py add_admin
&& python manage.py runserver 0.0.0.0:8000"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы