使用 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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章