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

SpringBoot en Docker no se conecta a Mongo en Docker

EDITAR:

Nunca he realizado un desarrollo de arranque de primavera, pero el error que dice que se muestra puede no estar relacionado con el problema de mongo. Sin embargo, aquí hay una explicación de por qué está fallando su conexión mongo:

docker-compose crea una red virtual si no se ha especificado una en el archivo (como en su caso).

Todas sus aplicaciones se ejecutan dentro de esta red, completamente aisladas entre sí. Como tal, localhost en su contenedor spring-boot en realidad se refiere a sí mismo. Lo que significa que su aplicación Spring-Boot está esperando el mongo instancia se ejecute dentro de su contenedor (lo cual no es así, está en un contenedor diferente).

Esto habría estado bien cuando tanto la base de datos como la aplicación se estaban ejecutando en la red de su computadora portátil. Pero como se mencionó, ahora se ejecutan en docker-compose red, en completo aislamiento.

Sin embargo, docker-compose es realmente inteligente! Crea un DNS para cada uno de sus contenedores que usa el nombre del servicio (en su caso, mongo y spring ) especificado en su docker-compose para permitir un fácil acceso a los contenedores dentro de la red.

Por lo tanto, debería poder cambiar spring.data.mongodb.uri=mongodb://localhost:27017/db a spring.data.mongodb.uri=mongodb://mongo:27017/db y eso debería permitir que se conecte.