sql >> Databáze >  >> NoSQL >> MongoDB

Nelze připojit Mongodb ke kontejneru Springboot v dockeru

Problém

Pokoušíte se přistupovat do DB s nesprávnou IP/hostname. Jak můžete vidět, přístup k localhost v jarním kontejneru by se převedl na tento kontejner a není tam žádný 27017 port tam poslouchá. Když spustíte jar na hostiteli dockeru, má 27017 port k dispozici, proto to funguje.

Řešení

Můžete použít --hostname příznak v docker run příkaz k nastavení názvu hostitele kontejneru DB, abyste se k němu mohli připojit z kontejneru Spring pomocí názvu hostitele.

Lepším řešením je však použít soubor docker-compose a spustit kontejnery pomocí docker-compose up .

Nejprve použijte

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

ve vašem kódu Spring a vytvořte si obrázek svého kódu.

Poté spusťte kontejnery podle následujících kroků:

A) Vytvořte nový soubor

Vytvořte soubor s názvem docker-compose.yml s následujícím obsahem:

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) Spusťte nový soubor

Spusťte následující příkaz a spusťte soubor pro vytvoření nového souboru:docker-compose up -d




  1. Výjimka časového limitu po asynchronních příkazech a Task.WhenAny čeká v StackExchange.Redis

  2. Jak nastavit časový limit čtení na klientovi node redis?

  3. Redis Pub/Sub ServiceStack, ruší vlákno

  4. Špatná vzdálenost v geonear metodě s Doctrine MongoDB ODM