POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Servicios locales sin complicaciones con Spring Boot y Docker Compose

Servicios locales sin complicaciones con Spring Boot y Docker Compose

Publicado el 02/09/2025

Ejecutar servicios de forma local nunca fue trivial y aún tiene sus particularidades. En cuanto una aplicación se integra con sistemas externos, el escenario se complica. En este artículo te mostramos cómo configurar una aplicación Spring Boot que se conecta a múltiples sistemas como un broker de mensajes y una base de datos, gestionando estas dependencias con spring-boot-docker-compose como parte del ciclo de vida de la aplicación.

Por qué y cuándo considerarlo. Usar entornos en vivo durante el desarrollo tiene pros y contras. Tecnologías comunes soportadas por Spring Boot y Spring Cloud como Kafka, MySQL, Firebase o RabbitMQ pueden y deben sustituirse localmente siempre que sea posible para acelerar los ciclos de feedback. En cambio, simular el comportamiento de servicios upstream con mocks añade complejidad y debe evaluarse con cuidado.

Caso de uso. Imagina una aplicación de Blog que consume eventos de Kafka desde el tópico blog.updates, calcula el sentimiento del post, publica el resultado en una cola de RabbitMQ y finalmente persiste el dato procesado en una base MSSQL Server. Para simplificar, el mismo servicio publica y consume.

Arquitectura y estructura del proyecto. Los artefactos clave son pom.xml, los ficheros de configuración application.yml y application-LOCAL.yml, el descriptor compose.yml y un script init.sql para inicializar la base de datos.

Dependencias. La pieza clave es spring-boot-docker-compose declarada con alcance runtime y marcada como optional. Es una herramienta de desarrollo, por lo que no se empaqueta en el fat jar de producción salvo que se indique explícitamente en la configuración de construcción. Con el plugin de Spring Boot puedes iniciar la app con el perfil LOCAL mediante el comando ./mvnw spring-boot:run -Dspring-boot.run.jvmArguments=-Dspring.profiles.active=LOCAL.

application.yml. Define la configuración por defecto y de calidad de producción. Por ejemplo, spring.datasource.url con la URI remota de la base de datos, credenciales y variables como ${DATABASE_PASSWORD}; spring.kafka.bootstrap-servers con la URI del clúster remoto y seguridad SASL SSL con credenciales almacenadas en variables como ${KAFKA_PASSWORD}; spring.rabbitmq.host, port, username y password. Además, establece spring.docker.compose.enabled=false para no levantar contenedores en producción.

application-LOCAL.yml. Sobrescribe valores para desarrollo local. Puntos clave: spring.datasource.url=jdbc:sqlserver://localhost;encrypt=false. Habilita el soporte de Docker Compose con spring.docker.compose.enabled=true y referencia el archivo con spring.docker.compose.file=classpath:/compose.yml. Puedes personalizar el ciclo de vida, por ejemplo spring.docker.compose.stop.command=down y spring.docker.compose.stop.timeout=10s. Configura Kafka en local con spring.kafka.bootstrap-servers=localhost:29092 y spring.kafka.security.protocol=PLAINTEXT. RabbitMQ apunta a host localhost. Opcionalmente inicializa el esquema con spring.sql.init.mode=always y spring.sql.init.schema-locations=classpath:init.sql. Por defecto Spring ejecuta docker compose up al arrancar la app y docker compose stop al detenerla; estos comandos pueden redefinirse con las propiedades anteriores.

compose.yml. Aquí describes los servicios sustitutos. Un ejemplo común incluye un clúster de Kafka de un solo nodo exponiendo el puerto 29092 y con variables de entorno que definen listeners y advertised listeners para acceso externo; un servicio auxiliar que crea el tópico blog.updates con dos particiones al arrancar; una instancia de MSSQL Server en el puerto 1433 con la variable MSSQL_SA_PASSWORD leída de ${DATABASE_PASSWORD}; y un contenedor de RabbitMQ en el puerto 5672 con usuario y contraseña definidos por variables como ${RABBIT_PASSWORD}. Ajusta nombres, versiones de imágenes y puertos según tus necesidades.

Enfoque alternativo. Testcontainers permite levantar dependencias efímeras tanto en pruebas como en desarrollo. Es una opción robusta si prefieres aislar servicios por test o por arranque. Consulta la referencia de Spring en documentación oficial.

Conclusión. Con Docker y spring-boot-docker-compose puedes orquestar tecnologías de producción en local de forma fluida, reduciendo fricción y mejorando la productividad. Este enfoque es ideal para equipos que construyen software a medida y desean ciclos de desarrollo rápidos con alta fidelidad respecto a producción.

El código completo del ejemplo original está disponible en este repositorio.

En Q2BSTUDIO ayudamos a empresas a diseñar y construir aplicaciones a medida y software a medida con arquitecturas modernas, pipelines CI CD, contenedores y observabilidad, integrando además prácticas de ciberseguridad desde el diseño y automatización de procesos. Si buscas un socio para crear productos escalables en la nube, descubre nuestros servicios de desarrollo de aplicaciones a medida y cómo llevamos tus soluciones del entorno local a producción sin sobresaltos.

Nuestro equipo también es especialista en inteligencia artificial e IA para empresas, diseño e implementación de agentes IA, servicios cloud AWS y Azure, servicios inteligencia de negocio y cuadros de mando con Power BI. Podemos modernizar tus entornos, optimizar costes y dotar a tus aplicaciones de capacidades cognitivas y de análisis avanzado. Conoce cómo aceleramos tus despliegues elásticos, resilientes y seguros con nuestros servicios cloud AWS y Azure.

Si quieres aplicar este flujo con Spring Boot en tu organización, contáctanos. Unificamos desarrollo, infraestructura y seguridad para que tus equipos se centren en aportar valor, desde el prototipo local con docker compose hasta la puesta en producción con Kubernetes, observabilidad, ciberseguridad y gobierno de datos.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio