kondrackii
@kondrackii
FullStack Developer

Как пробросить порт из контейнера с MongoDB в контейнер с NodeJS в Docker?

Есть два контейнера , один с BackEnd'ом на NodeJS, а другой с MongoDB.
Все работает, но приложение на NodeJS не видит порт MongoDB, логично, это же разные контейнеры. Покопавшийся в интернете, я нашел вроде подходящие решение - добавить в файл строку network_mode: host.
Файл docker-compose.yml

version: '3.7'
services:
  app:
    image: node:latest
    container_name: kondrackii-backend
    build: ./backend
    ports:
      - '8081:8081'
    volumes:
      - "./backend:/usr/src/app"
      - "/usr/src/app/node_modules"
    depends_on:
      - mongo
    #links:
    #  - mongo
    network_mode: host
    command: 'npm start'
  mongo:
    container_name: mongo
    image: mongo:latest
    ports:
      - '27017:27017'
    command: 'mongod'
    restart: always
    volumes:
      - "/var/www/kondrackii.ru/db:/data/db"
    network_mode: host


Часть файла с подключением к MongoDB

....
mongoose.connect('mongodb://127.0.0.1:27017/kondrackii', { useNewUrlParser: true, useCreateIndex: true })
....



Этот вариант не работает, NodeJS все равно не видит MongoDB. Что делать?

Я уже подумываю о том чтобы в один контейнер поместить NodeJS приложение и MongoDB. Правильно ли так делать?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Так неправильно:
mongoose.connect('mongodb://127.0.0.1:27017/kondrackii


попробуйте так:
mongoose.connect('mongodb://mongo:27017/kondrackii

если запускаете с docker-compose

это можно убрать
network_mode: host
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы