Задать вопрос
@EVOSandru6

Что не так с транслированием портов и нэймингов в docker-compose сборке?

Добрый день,

Сделал сбоку для Прослушивния http сервера, в качестве БД - mongo, (Сборку пытался произвести с networks и без, результат один):

version: '3.7'
services:
  node:
      container_name: app_node
      build: ./docker/containers/node
      volumes:
          - ./app:/var/www
          - ./volumes/node/nginx/:/var/log/nginx/
      ports:
        - 3002:3000
      working_dir: ${CONTAINER_PATH_HOST}
      restart: always
      tty: true
      networks:
        - myapp
  mongo:
    container_name: app_mongo
    image: mongo:latest
    ports:
      - 27018:27017
    networks:
      - myapp
networks:
    myapp:
        driver: bridge


localhost:3002 прослушивается ожидаемо. Результат отдается как надо.

Но если я пытаюсь произвести подключение к Mongo, то сыпятся ошибки:

mongoose.connect(
    'mongodb://mongo:27018/app',
    {
        useNewUrlParser: true,
        useUnifiedTopology: true
    }
)
    .then(() => console.log('MongoDB Connected'))
    .catch(err => console.log(err));

app.get('/', (req, res) => {
    res.send({'foo': 'bar'});
});

const port = 3000;

app.listen(port, () => console.log('Server running...'));


При запуске комманды из под контейнера node:

docker-compose exec node node server.js;

Ловлю следующий лог:

Server_started_
Server running...
{ MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 192.168.128.4:27018
at new MongooseServerSelectionError (/var/www/node_modules/mongoose/lib/error/serverSelection.js:22:11)
at NativeConnection.Connection.openUri (/var/www/node_modules/mongoose/lib/connection.js:808:32)
at Mongoose.connect (/var/www/node_modules/mongoose/lib/index.js:333:15)
at Object. (/var/www/server.js:10:10)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Module.load (internal/modules/cjs/loader.js:685:32)
at Function.Module._load (internal/modules/cjs/loader.js:620:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
at internal/main/run_main_module.js:21:11
message: 'connect ECONNREFUSED 192.168.128.4:27018',
name: 'MongooseServerSelectionError',
reason:
TopologyDescription {
type: 'Single',
setName: null,
maxSetVersion: null,
maxElectionId: null,
servers: Map { 'mongo:27018' => [ServerDescription] },
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: null,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: null },
[Symbol(mongoErrorContextSymbol)]: {} }


Насколько я понял, порт я указал правильно, в чем причина может быть?

ПОдскажите пожалуйста, в чем тут косяк - в портах или в нэймингах?
  • Вопрос задан
  • 474 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
gecube
@gecube
системный администратор, программист... все дела..
Ответ простой - потому что к монге надо подсоединяться как к mongo:27017

27018 - это для подключения извне
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы