sql >> Base de Datos >  >> NoSQL >> MongoDB

No se puede conectar Mongodb al contenedor Springboot en la ventana acoplable

Problema

Está intentando acceder a la base de datos con una IP/nombre de host incorrectos. Como puede ver, accediendo a localhost en el contenedor de primavera se resolvería en ese contenedor y no hay 27017 puerto escuchando allí. Cuando ejecuta el jar en el host docker, tiene 27017 puerto disponible, por eso funciona.

Solución

Puede usar --hostname marcar en docker run comando para configurar el nombre de host del contenedor DB para que pueda conectarse desde el contenedor Spring usando el nombre de host.

Sin embargo, la mejor solución es usar un archivo docker-compose e iniciar los contenedores usando docker-compose up .

En primer lugar, utilice

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

en su código Spring y cree una imagen de su código.

Luego, siga los pasos a continuación para iniciar los contenedores:

A) Crear archivo de redacción

Cree un archivo llamado docker-compose.yml con el siguiente contenido:

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) Ejecute el archivo de redacción

Ejecute el siguiente comando para ejecutar el archivo de redacción:docker-compose up -d