Configuración de Docker Compose para Spring Boot + MariaDB + Adminer
Cuándo usar esta combinación
Esta arquitectura es ideal para el desarrollo y despliegue de APIs empresariales y microservicios basados en Java que requieren transaccionalidad ACID y persistencia relacional. MariaDB ofrece un motor SQL robusto, optimizado y compatible con MySQL; Spring Boot gestiona la lógica de negocio con alta concurrencia; y Adminer actúa como un cliente web ultraligero (en un solo archivo) que acelera la depuración, ejecución de scripts y validación de esquemas en entornos locales o de pruebas sin sobrecargar los recursos del host.
Variables de entorno críticas para producción
MARIADB_ROOT_PASSWORD: Define la contraseña del superusuario del motor de base de datos. En producción debe ser un secreto criptográficamente seguro y nunca dejarse con valores por defecto o vacíos.SPRING_DATASOURCE_PASSWORD(alineada conMARIADB_PASSWORD): Clave de acceso del usuario específico de la aplicación. Debe gestionarse mediante secretos externos (Docker Secrets, Vault o variables de entorno inyectadas en CI/CD), evitando credenciales estáticas en el código fuente.SPRING_PROFILES_ACTIVE: Debe establecerse estrictamente enprod. Esto asegura la desactivación de consolas H2, herramientas de desarrollo (devtools), endpoints expuestos de Actuator sin autenticación y habilita las optimizaciones de caché del framework.
Consejo Senior: Seguridad de superficie de ataque
Elimina por completo el servicio de Adminer en entornos productivos.
Adminer es una herramienta de administración sin capa de autenticación propia (depende únicamente de las credenciales de la base de datos) y su exposición pública representa un vector crítico de ataque por fuerza bruta.
Si requieres administrar MariaDB en producción:
- Accede mediante un túnel SSH seguro (
ssh -L) utilizando clientes locales como DBeaver. - Si el uso de Adminer es mandatorio en entornos de staging, jamás publiques su puerto (
ports: - "8080:8080"). Colócalo detrás de un Reverse Proxy (Traefik/Nginx), restinge el acceso por listas de IP permitidas (whitelisting) o VPN, y añade una capa previa de autenticación HTTP/OAuth.
Checklist de Seguridad antes de desplegar
- Cambiar las contraseñas por defecto en el archivo .env
- Mapear volúmenes persistentes en el VPS
- Configurar las reglas de firewall para los puertos requeridos