Докеризация приложения Django с помощью mongoDB
Я работаю над веб-приложением Django, которое хранит данные в базе данных mongoDB. Когда я запускаю docker, используя файл docker-compose.yml, он открывает страницу входа и выдает ошибку CSFR token. Ниже приведены логи контейнера 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
Может ли кто-нибудь сказать мне, как я могу связать Django с mongoDB, используя dockers?
Из ошибки:
pymongo.errors.ServerSelectionTimeoutError: localhost:27017
мы можем сказать, что вы пытаетесь подключиться к localhost
на порт 27017
, но localhost
будет обращаться только к самому контейнеру django. Чтобы подключиться к другому контейнеру (mongodb), измените строку соединения или конфигурацию соединения в настройках django так, чтобы она указывала на имя этого другого контейнера. В вашем случае вы хотите изменить localhost
на mongodb_container
.