вот мой docker-compose.yml
файл:
version: "3.7"
services:
dev:
image: "node_rest_dev_img"
build:
context: .
container_name: node_rest_dev
working_dir: /usr/src/app
volumes:
- .:/usr/src/app
ports:
- 3010:3010
restart: always
depends_on:
- database_mongoDB
networks:
- node_rest_network
database_mongoDB:
image: mongo
container_name: node_rest_mongoDB
environment:
- MONGO_INITDB_ROOT_USERNAME=mongo_admin
- MONGO_INITDB_ROOT_PASSWORD=secret
ports:
- 27017:27017
volumes:
- ./__MONGO_DATA__:/data/db
networks:
- node_rest_network
networks:
node_rest_network:
driver: bridge
проблема в том, что у меня есть сеть с именем node_rest_network
, и эти два контейнера предполагают общаться друг с другом только внутри этой сети, вот мой Строка подключения в моем express приложении
import mongoose from "mongoose";
import AppConfig from "./AppConfig";
const connect = (ops = {}) => {
return mongoose.connect(
"mongodb://mongo_admin:secret@database_mongoDB/rest_standard_api",
{
...ops,
useNewUrlParser: true,
useUnifiedTopology: true
}
);
};
export default connect;
но, к сожалению, когда я запускаю docker-compose up
, это не работает, я всегда получаю эту ошибку в моем терминале:
Cannot connect to Mongo DB MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
node_rest_dev | at new MongooseServerSelectionError (/usr/src/app/node_modules/mongoose/lib/error/serverSelection.js:22:11)
node_rest_dev | at NativeConnection.Connection.openUri (/usr/src/app/node_modules/mongoose/lib/connection.js:823:32)
node_rest_dev | at Mongoose.connect (/usr/src/app/node_modules/mongoose/lib/index.js:333:15)
node_rest_dev | at connect (/usr/src/app/built/utils/mongoConnect.js:1:1064)
node_rest_dev | at /usr/src/app/built/app.js:8:373
node_rest_dev | at Object.<anonymous> (/usr/src/app/built/app.js:8:562)
node_rest_dev | at Module._compile (internal/modules/cjs/loader.js:1147:30)
node_rest_dev | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
node_rest_dev | at Module.load (internal/modules/cjs/loader.js:996:32)
node_rest_dev | at Function.Module._load (internal/modules/cjs/loader.js:896:14)
node_rest_dev | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
node_rest_dev | at internal/main/run_main_module.js:17:47 {
node_rest_dev | message: 'connect ECONNREFUSED 127.0.0.1:27017',
node_rest_dev | name: 'MongooseServerSelectionError',
node_rest_dev | reason: TopologyDescription {
node_rest_dev | type: 'Single',
node_rest_dev | setName: null,
node_rest_dev | maxSetVersion: null,
node_rest_dev | maxElectionId: null,
node_rest_dev | servers: Map(1) { 'localhost:27017' => [ServerDescription] },
node_rest_dev | stale: false,
node_rest_dev | compatible: true,
node_rest_dev | compatibilityError: null,
node_rest_dev | logicalSessionTimeoutMinutes: null,
node_rest_dev | heartbeatFrequencyMS: 10000,
node_rest_dev | localThresholdMS: 15,
node_rest_dev | commonWireVersion: null
node_rest_dev | },
node_rest_dev | [Symbol(mongoErrorContextSymbol)]: {}
node_rest_dev | }
может кто-нибудь, пожалуйста, намекните мне, что я делаю не так?