使用 mongoDB Dockerize Django 应用程序

Posted

技术标签:

【中文标题】使用 mongoDB Dockerize Django 应用程序【英文标题】:Dockerize Django application with mongoDB 【发布时间】:2022-01-11 06:19:06 【问题描述】:

我正在开发将数据存储在 mongoDB 数据库中的 Django Web 应用程序。当我使用 docker-compose.yml 文件运行 docker 时,它会打开登录页面并给出 CSFR 令牌错误。以下是 Django 容器的日志:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused, Timeout: 30s, Topology Description: <TopologyDescription id: 61ad29e66ee4fa015775e4b9, topology_type: Single, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 111] Connection refused')>]>

[05/Dec/2021 21:13:23] "GET /dashboard/ HTTP/1.1" 500 94504

docker-compose.yml 文件内容:

version: "3.7"

services:
  mongodb_container:
    image: mongo:latest
    volumes:
      - mongodb_data_container:/data/db
    ports:
      - 27017:27017

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - django_data_container:/home/app/webapp  
    ports:
      - "8000:8000"
    links:
      - mongodb_container
    depends_on:
      - mongodb_container

谁能告诉我如何使用 docker 将 Django 与 mongoDB 通信?

【问题讨论】:

你能包括你的 django 数据库设置吗? 【参考方案1】:

来自错误:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017

我们可以看出您正在尝试连接到端口 27017 上的 localhost,但 localhost 只会寻址 django 容器本身。为了连接到另一个容器(mongodb),在 django 设置中更改连接字符串或连接配置以指向另一个容器的名称。在您的情况下,您想将 localhost 更改为 mongodb_container

【讨论】:

以上是关于使用 mongoDB Dockerize Django 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

5分钟将 Django 项目进行容器化管理

dockerize 容器工具集基本使用

解耦和 Dockerize Django 和 Celery

SBT:如何 Dockerize 一个胖罐子?

使用 MySQL 容器对 Django 应用程序进行 Dockerize

如何使用 Gradle Kotlin DSL 对 Spring Boot 应用程序进行 Dockerize