通过 docker-compose 文件创建的 django 超级用户不起作用

问题描述

我有一个简单的 django-mongo 应用程序。 我的 django 应用程序有一个 dockerfile。

我有一个 docker-compose.yml,其中包含 django 和 mongo 图像。 我能够使用 docker-compose 命令构建和运行 django-mongo 应用程序。

我面临的问题是我无法使用超级用户凭据登录到 django 管理面板

下面是我的 dockerfile

FROM python:3.8-alpine

RUN mkdir /cursor_infotech
workdir /cursor_infotech
ADD . /cursor_infotech/

RUN pip install -r requirements.txt

docker-compose.yml

version: "3"
services:
       cursor-infotech:
           container_name: cursor
           image: cursor
           restart: always
           build: .
           #environment:
            #  - MONGO_URI=$MONGO_URI
            #  - PORT=$PORT
            #  - NODE_ENV=$NODE_ENV   
           ports:
              - "7000:7000"
           networks:
              - cursor-backend
           depends_on:
              - mongo
           command: > 
                sh -c "python manage.py makemigrations && python manage.py migrate && 
                python manage.py createsuperuser --noinput --username admin --email admin@test.com && gunicorn -b 0.0.0.0:7000 cursor_infotech.wsgi"
       mongo:
             container_name: mongo
             image: mongo  
             environment:
               - MONGO_INITDB_DATABASE=cursor-pcbuild
               - MONGO_INITDB_ROOT_USERNAME=root
               - MONGO_INITDB_ROOT_PASSWORD=password
             volumes:
                - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo-js:ro
                - ./data:/usr/share/db/data
             ports:
                - '27017:27017'
             networks:
                - cursor-backend 
networks:
  cursor-backend:
    driver: bridge

我在我的项目文件夹中运行了这个命令

docker-compose up --build

django 和 mongo 映像已构建和部署 - 工作正常。

当我尝试在 django 管理面板登录管理员帐户时, 我得到以下错误

django admin panel error

当我尝试登录 django 管理面板时,我使用 docker-compose.yml 创建的 django 超级用户不起作用。 如何解决这个问题?

更新:

我已经在与 docker-compose.yml 相同的目录中创建了一个 .env 文件。 (忘记说了)

.env 文件如下图

DJANGO_SUPERUSER_PASSWORD=password

正如下面评论中提到的,如果你不想看图片,我正在解释这个问题。 -> 当我尝试使用我的用户名和密码访问管理面板时,

出现错误: 请为员工帐户输入正确的用户名和密码。

解决方法

根据documentation

"非交互运行时,可以通过设置DJANGO_SUPERUSER_PASSWORD环境变量来提供密码。否则,将不会设置密码,超级用户帐户将无法登录,直到手动为其设置密码.”

因此,您需要在运行 createsuperuser 命令之前设置环境变量。

此外,请不要将错误发布为图片,这可能会给连接速度较慢或运行辅助功能软件的用户带来问题。