Невозможно подключиться к набору реплик MongoDB, работающему в Docker с Python: ошибка «Временный сбой в разрешении именPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно подключиться к набору реплик MongoDB, работающему в Docker с Python: ошибка «Временный сбой в разрешении имен

Сообщение Anonymous »

Я пытаюсь настроить набор реплик MongoDB в Docker и подключиться к нему с помощью Python. Однако я столкнулся со следующей ошибкой:

Сообщение об ошибке

Код: Выделить всё

ServerSelectionTimeoutError: mongo3:27017: [Errno -3] Temporary failure in name resolution (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms),mongo2:27017: [Errno -3] Temporary failure in name resolution (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms),mongo1:27017: [Errno -3] Temporary failure in name resolution (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: 

Конфигурация Docker

Я создал сеть Docker:

Код: Выделить всё

docker network create mongo-net
Мой файл docker-compose.yml выглядит так:

Код: Выделить всё

services:
mongo1:
image: mongo:latest
container_name: mongo1
hostname: mongo1
networks:
- mongo-net
ports:
- "27017:27017"
command: ["--replSet", "myReplicaSet"]

mongo2:
image: mongo:latest
container_name: mongo2
hostname: mongo2
networks:
- mongo-net
ports:
- "27018:27017"
command: ["--replSet", "myReplicaSet"]

mongo3:
image: mongo:latest
container_name: mongo3
hostname: mongo3
networks:
- mongo-net
ports:
- "27019:27017"
command: ["--replSet", "myReplicaSet"]

networks:
mongo-net:
driver: bridge
Я запустил набор реплик:

Код: Выделить всё

docker exec -it mongo1 mongosh
rs.initiate({
_id: "myReplicaSet",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
})
Состояние набора реплик:

Код: Выделить всё

rs.status()
Выход:

Код: Выделить всё

{
set: 'myReplicaSet',
date: ISODate('2025-01-06T13:26:53.825Z'),
myState: 1,
term: Long('1'),
...
members: [
{
_id: 0,
name: 'mongo1:27017',
stateStr: 'PRIMARY',
...
},
{
_id: 1,
name: 'mongo2:27017',
stateStr: 'SECONDARY',
...
},
{
_id: 2,
name: 'mongo3:27017',
stateStr: 'SECONDARY',
...
}
],
...
}

Код Python

Код: Выделить всё

from pymongo import MongoClient

uri = "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=myReplicaSet"
client = MongoClient(uri)
db = client.my_database
collection = db.my_collection

document = {"name": "Replica Test", "value": 42}
result = collection.insert_one(document)
После использования приведенных выше конфигураций и кода я получаю сообщение об ошибке «Временная ошибка разрешения имен» при попытке подключения.
Как устранить проблему эта проблема?


Подробнее здесь: https://stackoverflow.com/questions/793 ... emporary-f
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»