MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nie można połączyć Mongodb z kontenerem Springboot w dockerze

Problem

Próbujesz uzyskać dostęp do bazy danych z niewłaściwym adresem IP/nazwą hosta. Jak widać, dostęp do localhost w wiosennym kontenerze rozwiązałoby się do tego kontenera i nie ma 27017 port tam nasłuchuje. Kiedy uruchamiasz jar na hoście dockera, ma on 27017 dostępny port, dlatego działa.

Rozwiązanie

Możesz użyć --hostname flaga w docker run polecenie, aby ustawić nazwę hosta kontenera DB, aby można było połączyć się z nim z kontenera Spring przy użyciu nazwy hosta.

Jednak lepszym rozwiązaniem jest użycie pliku docker-compose i uruchomienie kontenerów za pomocą docker-compose up .

Przede wszystkim użyj

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

w kodzie Springa i zbuduj obraz swojego kodu.

Następnie wykonaj poniższe czynności, aby uruchomić kontenery:

A) Utwórz plik do tworzenia

Utwórz plik o nazwie docker-compose.yml z następującą treścią:

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) Uruchom plik do tworzenia

Wykonaj następujące polecenie, aby uruchomić plik tworzenia:docker-compose up -d




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest najlepszy sposób obsługi globalnego połączenia Mongodb w NodeJs?

  2. zakres mapreduce mongodb - ReferenceError

  3. Wstaw Pandas Dataframe do mongodb za pomocą PyMongo

  4. Jak używać arrayFilters z mangustą 5.x.x?

  5. Przywróć bazę danych MongoDB za pomocą mongorestore