Docker-compose django+mongo 应用程序卡在“正在执行系统检查...”

Posted

技术标签:

【中文标题】Docker-compose django+mongo 应用程序卡在“正在执行系统检查...”【英文标题】:Docker-compose django+mongo app stuck at "Performing system checks..." 【发布时间】:2021-07-02 00:40:59 【问题描述】:

使用 djongo 使用 mongodb 运行 django 应用程序。这是 docker-compose 文件:

version: '3.1'

volumes:
    mongo:

services:
  mongodb:
    image: mongo
    restart: always
    volumes:
      - 'mongo:/data/db'
    ports:
      - 27017:27017

  web:
    build: .
    restart: always
    depends_on:
      - 'mongodb'
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/django_mongodb_docker
    ports:
      - 8000:8000
    links:
      - 'mongodb'

构建成功,然后卡在以下:

web_1      | Watching for file changes with StatReloader
web_1      | Performing system checks...
web_1      | 

任何帮助将不胜感激!!!

【问题讨论】:

【参考方案1】:

我也经历了这个,设法通过以下配置建立了这种联系:

docker-compose.yml

version: "3.9"
services:
mongodb:
  environment:
    MONGO_INITDB_DATABASE: mydatabase
    MONGO_INITDB_ROOT_USERNAME: root
    MONGO_INITDB_ROOT_PASSWORD: password
  hostname: mongodb
  image: mongo
  ports:
    - "27017:27017"
  volumes: 
    - ./data-mongodb:/data/db
  
api:
  build: .
  command: "python manage.py runserver 0.0.0.0:8000"
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  depends_on:
    - mongodb

Dockerfile

# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /code/

requirements.txt

asgiref==3.4.1
Django==3.2.7
django-annoying==0.10.6
djangorestframework==3.12.4
djongo==1.3.6
pymongo==3.12.1
pytz==2021.3
six==1.16.0
sqlparse==0.2.4

settings.py

DATABASES = 
    'default': 
      'ENGINE': 'djongo',
      'NAME': 'mydatabase',
      'CLIENT': 
          'host': 'mongodb://mongodb:27017',
          'username': 'root',
          'password': 'password',
          'authSource': 'admin',
          'authMechanism': 'SCRAM-SHA-1',
      
  

这里使用的模型来自 Djongo 而不是from django.db import models

models.py

from djongo import models

build之后,需要进入api容器,运行./manage.py migrate

【讨论】:

以上是关于Docker-compose django+mongo 应用程序卡在“正在执行系统检查...”的主要内容,如果未能解决你的问题,请参考以下文章

使用 docker-compose 链接 django 和 mysql 容器

docker-compose 和 django 出错

通过主管和 docker-compose 从 django 输出彩色日志

django 无法在 docker-compose 中连接 mysql

Docker-compose实战——Django+PostgreSQL

docker-compose 与 postgres 的 Django 连接