Servicios locales sin complicaciones con Spring Boot y Docker Compose

Aprende a ejecutar una app Spring Boot con Docker Compose en desarrollo local: conecta Kafka, MSSQL y RabbitMQ y acelera el feedback gestionando dependencias.

2 sept 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat