Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

794
Views
Cómo definir el nombre de host en docker-compose.yml para MongoDB y Spring Boot

Estoy tratando de crear docker-compose.yml con MongoDB y Spring boot. El problema es que no quiero codificar ninguna conexión de base de datos en application.properties de Spring.

De este artículo vi que puede iniciar un contenedor mongodb con un nombre de host predefinido. Como entiendo, todos los servicios definidos en el archivo yml de composición están en la misma red pero tienen direcciones IP diferentes, ¿verdad? Entonces, la pregunta principal es cómo definir el nombre de host mongodb en docker-compose.yml y usar ese nombre en el archivo spring boot application.properties.

Intentaré dar toda la información que pueda, pero si algo no está claro, házmelo saber.

Aquí hay información sobre la aplicación Spring Boot.

Las dependencias que estoy usando en el proyecto Spring son:

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

La aplicación tiene interfaces que amplían MongoRepository:

 import org.springframework.data.mongodb.repository.MongoRepository; public interface ServiceLoggerRepository extends MongoRepository<ExampleEntity, String> { }

y está utilizando entidades anotadas de @Document

 import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "example") public class ExampleEntity { @Id private String _id; private String name; }

La conexión de la base de datos se define en el archivo application.properties:

 #here is the problem - this the vm ip spring.data.mongodb.uri=mongodb://192.168.0.51 spring.data.mongodb.database=mongo-test

Información sobre el Dockerfile de Spring Boot:

 FROM openjdk:8-jre COPY ./mongo-test.jar ./usr/mongo-test.jar EXPOSE 8080 RUN sh -c 'touch /usr/mongo-test.jar' ENTRYPOINT ["java","-jar","/usr/mongo-test.jar"]

Información sobre docker-compose: tiene 2 servicios: MongoDB y la aplicación Spring Boot.

 version: "3" services: mongodb: restart: always image: mongo container_name: "mongodb-test" ports: - 27017:27017 command: --smallfiles mongo-logger: restart: always build: ./mongo-test container_name: "mongo-test" ports: - 8080:8080 depends_on: - mongodb links: - mongodb

Cuando se crea y ejecuta el contenedor, funciona. Pero el problema es que no tengo idea de dónde y cómo definir spring.data.mongodb.uri para usar algo estático como spring.data.mongodb.uri=mongodb://mongo-hostname por ejemplo.

¿Es posible y hay soluciones rey o buenas prácticas para hacer esto?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para acceder a mongodb, debe usar el nombre del servicio mongodb definido en docker-compose.yml .

Y puede configurar eso en las propiedades de la aplicación usando env vars como a continuación:

 //aplication.properties ... spring.data.mongodb.uri=${MONGODB_URI}

y

 //docker-compose.yml version: "3" services: mongodb: image: mongo container_name: "mongodb-test" ports: - 27017:27017 mongo-logger: build: ./mongo-test container_name: "mongo-test" ports: - 8080:8080 environment: - MONGODB_URI=mongodb://mongodb depends_on: - mongodb
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!