MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Impossible de connecter Mongodb au conteneur Springboot dans le menu fixe

Problème

Vous essayez d'accéder à la base de données avec une mauvaise adresse IP/nom d'hôte. Comme vous pouvez le voir, accéder à localhost dans le conteneur de printemps résoudrait ce conteneur et il n'y a pas de 27017 port d'écoute là-bas. Lorsque vous exécutez le jar sur l'hôte docker, il a 27017 port disponible, c'est pourquoi cela fonctionne.

Solution

Vous pouvez utiliser --hostname indicateur dans docker run commande pour définir le nom d'hôte du conteneur DB afin que vous puissiez vous y connecter à partir du conteneur Spring en utilisant le nom d'hôte.

La meilleure solution, cependant, consiste à utiliser un fichier docker-compose et à démarrer les conteneurs à l'aide de docker-compose up .

Tout d'abord, utilisez

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

dans votre code Spring et créez une image de votre code.

Ensuite, suivez les étapes ci-dessous pour démarrer les conteneurs :

A) Créer un fichier de composition

Créez un fichier nommé docker-compose.yml avec le contenu suivant :

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) Exécutez le fichier de composition

Exécutez la commande suivante pour exécuter le fichier de composition :docker-compose up -d