У меня есть два приложения:
Два приложения безупречно взаимодействуют, когда мое приложение узла запускается изначально. Теперь я поместил его в Docker-контейнер, и когда я запускаю оба вместе с docker compose up
, бэкэнд не может подключиться к MongoDB.
Это фрагмент последовательности запуска:
mongodb_1 | 2018-11-10T22:22:52.481+0000 I NETWORK [initandlisten] waiting for connections on port 27017
[...]
backend_1 | 2018-11-10T22:23:48.119Z 'MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]'
Это мой docker-compose.yml
:
version: '2'
services:
mongodb:
image: bitnami/mongodb:latest
expose:
- 27017
environment:
- ALLOW_EMPTY_PASSWORD=yes
backend:
build: ./backend
environment:
API_HOST: http://localhost:3000/
APP_SERVER_PORT: 3000
expose:
- 3000
volumes:
- ./backend:/app/backend
links:
- mongodb
depends_on:
- mongodb
Это мой узел вызова в БД:
mongoose.connect('mongodb://localhost:27017/groceryList', {
useNewUrlParser: true
});
Я просмотрел около 15 вопросов Stackoverflow, задавая то же самое, и я не понимаю причину:
- Дело не в том, что MongoDB не готов, когда мое приложение узла пытается
подключения. Я завернул свой вызов подключения в автоматическое переподключение
функционируйте как описано здесь и ошибка повторяется бесконечно. Это не только о "первом
подключения».
- Я могу опубликовать порт 27017 контейнера MongoDB и
счастливо соединиться с Robo3T . БД определенно работает.
- Когда я подключаюсь к
mongodb://mongo:27017/groceryList
вместо этого, применяется то же самое, только с флагом ENOTFOUND
вместо ECONNREFUSED
.
Что мне не хватает?
- Докер 18.06.1-ке
- docker-compose 1.22.0
- Мангуст 5.3.6
- MongoDB 4.0.3
- Узел 11.1.0
- macOS 10.14.1