Докеризация приложения 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.

Вернуться на верх