MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Не може да се свърже Mongodb към Springboot контейнер в докер

Проблем

Опитвате се да получите достъп до базата данни с грешен IP/име на хост. Както можете да видите, достъп до localhost в пролетния контейнер ще се разреши към този контейнер и няма 27017 порт слуша там. Когато стартирате буркана на докер хост, той има 27017 наличен порт, затова работи.

Решение

Можете да използвате --hostname флаг в docker run команда за задаване на името на хоста на DB контейнера, така че да можете да се свържете с него от 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) Стартирайте композирания файл

Изпълнете следната команда, за да стартирате композирания файл:docker-compose up -d




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Брой съвпадащи елементи на вложен масив

  2. Как да знам размера на моя документ в MongoDB с ruby ​​драйвера

  3. Промяна на директорията за съхранение на данни MongoDB

  4. $ Composer не може да намери разширение mongodb, необходимо е разширение Mongodb

  5. MongoDB разлика между обект DateTime и низ ГГГГ-ММ-ДД