Я пытаюсь создать минимальный док 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