Развертывание Django с помощью docker — создание суперпользователя

#django #docker #docker-compose #dockerfile #django-admin

#django #docker #docker-compose #dockerfile #django-администратор

Вопрос:

У меня настроено 3 среды, и я не могу создать суперпользователя. То, как я переношу и запускаю сервер, теперь следует за контейнером, так что у меня есть entrypoint.sh:

 #!/bin/sh
  1
  2 echo "${RTE} Runtime Environment - Running entrypoint."
  3
  4 if [ "$RTE" = "dev" ]; then
  5
  6     python manage.py makemigrations --merge
  7     python manage.py migrate --noinput
  8     python manage.py runserver 0:8000
  9
 10     python manage.py createsuperuser --username "admin" --email "admin@banl.com" --password "superuser"
 11     echo "created superuser"
 12
 13 elif [ "$RTE" = "test" ]; then
 14
 15     echo "This is tets."
 16     python manage.py makemigrations
 17     python manage.py migrate
 18     python manage.py runserver
 19
 20 elif [ "$RTE" = "prod" ]; then
 21
 22     python manage.py check --deploy
 23     python manage.py collectstatic --noinput
 24     gunicorn kea_bank.asgi:application -b 0.0.0.0:8080 -k uvicorn.workers.UvicornWorker
 25
 26 fi
 

строки 10/11 — это то, что я хочу заставить работать, я думаю, у меня проблема с синтаксисом. Первоначально я хотел, чтобы пароль и имя пользователя были переменными, хранящимися в файле env:

 1   RTE=dev
  1 POSTGRES_USER=pguser
  2 POSTGRES_PASSWORD=pgpassword
  3 POSTGRES_DB=devdb
  4 DJANGO_SUPERUSER_PASSWORD=superuser
  5 DJANGO_SUPERUSER_EMAIL=admin@bank.com
  6 DJANGO_SUPERUSER_USERNAME=admin
 

Но теперь я просто хочу, чтобы это сработало, мне нужно создать учетную запись суперпользователя, чтобы развиваться.
Кто-нибудь может определить, что не так?
Я вижу свое приложение на локальном хосте: 8000, но как мне создать суперпользователя в этом сценарии?

Ответ №1:

Согласно createsuperuser -h и этому документу, createsuperuser команда не поддерживает --password флаг. чтобы прочитать аргументы из переменных среды, вы должны использовать эту команду с --noinput флагом и задать обязательные поля, такие как имя пользователя, адрес электронной почты и пароль, как DJANGO_SUPERUSER_<uppercase_field_name> в вашем env-файле.

python manage.py createsuperuser --noinput

Комментарии:

1. Спасибо за предложение! это работало исправлено с entrypoint.sh линия: python manage.py createsuperuser --noinput --username $DJANGO_SUPERUSER_USERNAME --email $DJANGO_SUPERUSER_EMAIL