У меня два Docker контейнера, работающих в одной мостовой сети (docker0).
- mongodb - Контейнер MongoDB с моей базой данных
- usercreate - API-интерфейс Create_User, работающий на flask и вставляющий пользователя в контейнер MongoDB.
Я тестирую в Postman на моем локальном компьютере отправку данных в этот контейнер "usercreate", который будет запись в контейнер MongoDB.
При запуске моих контейнеров usercreate был перенаправлен с портами 5000: 5000 и mongodb - 27017: 27017 (для тестирования).
Все сценарии ios были выполнены с почтальоном .
------- --Сценарий1:
Я перепробовал все конфиги MONGO_URI для имени контейнера mongodb , порт, без порта и только с IP-адресом контейнера.
app.config["MONGO_URI"] = "mongodb://mongodb:27017/User"
app.config["MONGO_URI"] = "mongodb://mongodb/User"
app.config["MONGO_URI"] = "mongodb://172.18.0.2:27017/User"
app.config["MONGO_URI"] = "mongodb://172.18.0.2/User"
--------- Сценарий 2:
I r это приложение usercreate flask на моем локальном хосте через порт 5001 (поскольку контейнер usercreate используется 5000)
localhost:5001/createuser
Все работает!
--------- Сценарий 3:
При запуске контейнеров в "хостовой" сети вместо моста, контейнер usercreate также работал.
Я думаю, причина в том, что мой usercreate контейнер пытается найти базу данных Mon go в localhost:27017
вместо mongodb:27017
согласно ошибка в Scenario1 (также показано ниже)
`pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused`
Как мне получить контейнер usercreate для использования (имя контейнера) : 27017 MONGO_URI вместо localhost: 27017? Кажется, он игнорирует мой MONGO_URI в моей конфигурации Flask.
Могут ли быть другие причины этой ошибки?