Mon goose Ошибка выбора сервера ECONNREFUSED с docker -compose - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь создать минимальный док go Express стек React Node. Понедельник goose прекрасно подключается к моему dockerised mon go при использовании узла, но не удается при попытке внутрь docker.

back. js:

const express = require('express');
const app = express();
const mongoose = require('mongoose');

mongoose.connect('mongodb://mongo:27017/test', {useNewUrlParser: true, useUnifiedTopology: true},
    () => {console.log("connection established")})
    .catch(error => handleError(error));
let db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {

// some stuff

    });

    app.listen(3000, function () {
        console.log('Express-js listening on port 3000')
    });
});

docker -compose.yml:

version: "3.7"

services:
  mongodb:
    image: mongo:latest
    container_name: mongo
    volumes: 
      - mongodb-data:/data/db
    ports:
      - 27017:27017

  express-js:
    build: ./back-express/ #local Dockerfile
    ports:
      - 3000:3000
    depends_on:
      - mongodb

volumes: 
  mongodb-data:

Dockerfile:

FROM node:lts
WORKDIR ./
COPY package.json yarn.lock ./
RUN yarn install --production
COPY . .
CMD ["node", "back.js"]

Ошибка:

express-js_1     | connection error: MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
express-js_1     |     at new MongooseServerSelectionError (/node_modules/mongoose/lib/error/serverSelection.js:22:11)

(...)

express-js_1     |   message: 'connect ECONNREFUSED 127.0.0.1:27017',
express-js_1     |   name: 'MongooseServerSelectionError',
express-js_1     |   reason: TopologyDescription {
express-js_1     |     type: 'Single',
express-js_1     |     setName: null,
express-js_1     |     maxSetVersion: null,
express-js_1     |     maxElectionId: null,
express-js_1     |     servers: Map { 'localhost:27017' => [ServerDescription] },
express-js_1     |     stale: false,
express-js_1     |     compatible: true,
express-js_1     |     compatibilityError: null,
express-js_1     |     logicalSessionTimeoutMinutes: null,
express-js_1     |     heartbeatFrequencyMS: 10000,
express-js_1     |     localThresholdMS: 15,
express-js_1     |     commonWireVersion: null
express-js_1     |   },
express-js_1     |   [Symbol(mongoErrorContextSymbol)]: {}
express-js_1     | }

Я пытался добавить это до последней строки в моем Dockerfile: CMD ["sleep", "10"] но это не имело никакого эффекта.

Я понятия не имею, что происходит не так. Я долго искал Inte rnet. Любая помощь сделает мой день.

Полный код доступен здесь: https://github.com/npasquie/back-express клонировать этот проект в первую очередь: https://github.com/npasquie/back-express

1 Ответ

1 голос
/ 23 марта 2020

Мой друг нашел ответ. Код работает, но я забыл перестроить свои изображения с docker-compose build перед запуском контейнеров.

Извините за первоначальный вопрос, который не очень полезен, тем не менее, я думаю, что я не буду удалять его, потому что это может помочь другим новичкам, которые совершили ту же ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...