Node.js LoopBack framework, docker -compose.yml, MongoDB Connector - Ошибка: MongoServerSelectionError: connect ECONNREFUSED - PullRequest
1 голос
/ 11 апреля 2020

Я не могу подключить MongoDB к моей платформе LoopBack.

Я могу подключиться к базе данных с Пн go Express. Я могу создавать БД и коллекции. Но он работает на локальном хосте. Из моего приложения мне нужно соединиться с mon go: 27017.

docker -compose.yml

version: "3.7"
services:
  web:
    build:
      context: .
      dockerfile: .docker/node/Dockerfile
    volumes:
      - .:/home/node/app
    ports:
      - 3000:3000
    depends_on:
      - mongo
    links:
      - mongo
  mongo:
    image: mongo:latest
    restart: always
    volumes:
      - ./src/datasources/mongodb:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    ports:
      - 27017:27017
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example

Dockerfile

# Check out https://hub.docker.com/_/node to select a new base image
FROM node:10-slim

# Set to a non-root built-in user `node`
USER node

# Create app directory (with user `node`)
RUN mkdir -p /home/node/app

WORKDIR /home/node/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY --chown=node package*.json ./

RUN npm install

# Bundle app source code
COPY --chown=node . /home/node/app

RUN npm run build

# Bind to all network interfaces so that it can be mapped to the host OS
ENV HOST=0.0.0.0 PORT=3000

EXPOSE ${PORT}
CMD [ "node", "." ]

LoopBack источников данных - mon go -db.datasource.config. json

{
  "name": "MongoDB",
  "connector": "mongodb",
  "url": "",
  "host": "mongo",
  "port": 27017,
  "user": "root",
  "password": "sportee",
  "database": "sportee",
  "useNewUrlParser": true
}

docker error

MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017

at Timeout.waitQueueMember.timer.setTimeout [as _onTimeout] (/home/node/app/node_modules/mongodb/lib/core/sdam/topology.js:430:30)

at ontimeout (timers.js:436:11)

at tryOnTimeout (timers.js:300:5)

at listOnTimeout (timers.js:263:5)

at Timer.processTimers (timers.js:223:10)

Emitted 'error' event at:

at MongoDbDataSource.postInit (/home/node/app/node_modules/loopback-datasource-juggler/lib/datasource.js:502:16)

at onError (/home/node/app/node_modules/loopback-connector-mongodb/lib/mongodb.js:316:21)

at /home/node/app/node_modules/loopback-connector-mongodb/lib/mongodb.js:324:9

at /home/node/app/node_modules/mongodb/lib/utils.js:722:9

at err (/home/node/app/node_modules/mongodb/lib/mongo_client.js:216:23)

at connectCallback (/home/node/app/node_modules/mongodb/lib/operations/connect.js:350:5)

at topology.connect.err (/home/node/app/node_modules/mongodb/lib/operations/connect.js:583:14)

at Object.selectServer.err [as callback] (/home/node/app/node_modules/mongodb/lib/core/sdam/topology.js:285:11)

at Timeout.waitQueueMember.timer.setTimeout [as _onTimeout] (/home/node/app/node_modules/mongodb/lib/core/sdam/topology.js:435:25)

[... lines matching original stack trace ...]

Unhandled error in GET /users: 500 Error: Timeout in connecting after 5000 ms

at Timeout._onTimeout (/home/node/app/node_modules/loopback-datasource-juggler/lib/datasource.js:2640:10)

at /home/node/app/node_modules/loopback-datasource-juggler/lib/datasource.js:343:12

Может кто-нибудь помочь, пожалуйста? :)

ОБНОВЛЕНИЕ: я решаю свою проблему с добавлением сетей в мой docker-compose.yml

networks:
  app-tier:
    driver: bridge
  me-tier:
    driver: bridge
...