Не удается подключить Mongodb к контейнеру Springboot в докере - PullRequest
0 голосов
/ 26 апреля 2018

Я перепробовал много вариантов доступа к образу MongoDB из докера.Он отлично работает вне докера, но если я запускаю приложение в контейнере докера, он показывает мне ошибку.Упомянутые ниже скриншоты ошибок.Также поделился кодом подключения и командами, которые я выполняю.

Исключение при запуске приложения весенней загрузки

logs

Mongo Db Container Running containers

Java-код, используемый для подключения докера MongoDB image

MongoClient mongo = new MongoClient("mongodb//db", 27017));

Я пробовал также с альтернативными опциями

MongoClient mongo = new MongoClient("localhost", 27017));

Работает нормально, если я запускаю банку напрямую, но не работаетвнутри контейнера докера.

Пожалуйста, предоставьте мне решение.

1 Ответ

0 голосов
/ 26 апреля 2018

Проблема

Вы пытаетесь получить доступ к БД с неправильным IP / именем хоста.Как вы можете видеть, доступ к localhost в контейнере пружины разрешил бы этот контейнер, и там нет порта для прослушивания 27017.Когда вы запускаете jar на хосте докера, у него есть доступный порт 27017, поэтому он работает.enter image description here

Решение

Вы можете использовать флаг --hostname в команде docker run, чтобы задать имя хоста контейнера БД, чтобы вы могли подключиться к нему изSpring контейнер с использованием имени хоста.

Однако лучшим решением является использование файла docker-compose и запуск контейнеров с помощью docker-compose up.

Прежде всего используйте

MongoClient mongo = new MongoClient("db", 27017));

в своем коде Spring и создайте образ своего кода.

После этого выполните следующие шаги, чтобы запустить контейнеры:

A) Создать файл Compose

Создать файл с именем docker-compose.yml со следующим содержимым:

version: "2.1"
services:
  app:
    # replace imageName with your image name (block in your case)
    image: imageName:tag
    ports:
      - 9876:4000 # Replace the port of your application here if used
    depends_on: 
      - db
  db:
    image: mongo
    volumes:
      - ./database:/data
    ports:
      - "27017:27017"   

B) Запустить файл Compose

Выполнить следующую командучтобы запустить файл композиции: docker-compose up -d

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