Configuración de Docker Compose para Spring Boot + MariaDB + Adminer
Cuándo usar este stack
Esta arquitectura es ideal para el desarrollo ágil y entornos de prueba de microservicios o aplicaciones web empresariales. Combina la robustez tipada y el ecosistema empresarial de Spring Boot, la fiabilidad y compatibilidad ACID de MariaDB como base de datos relacional, y Adminer como un cliente web ligero de administración de base de datos sin sobrecarga de configuración. Permite a los desarrolladores prototipar, depurar esquemas y validar persistencia de datos rápidamente en local o staging.
Variables de entorno críticas para producción
MARIADB_ROOT_PASSWORD: Debe establecerse con una contraseña de alta entropía. Nunca debe dejarse vacía ni con valores por defecto para evitar la toma de control del motor de BD.MARIADB_PASSWORD/SPRING_DATASOURCE_PASSWORD: Credenciales del usuario de la aplicación con privilegios mínimos (least privilege) asignados únicamente sobre la base de datos de destino.SPRING_PROFILES_ACTIVE: Debe cambiarse aprodpara deshabilitar configuraciones de desarrollo (comoddl-auto: update, consolas H2 o endpoints sensibles de Actuator expuestos sin autenticación).
Consejo de DevOps: Seguridad y Rendimiento
- Seguridad (Zero-Trust para Adminer): Elimina el contenedor de Adminer en el despliegue de producción. Si el acceso a la base de datos es mandatorio, aíslalo en una red interna accesible únicamente mediante un túnel SSH, VPN o un Reverse Proxy con autenticación multifactor (MFA).
- Rendimiento (JVM & DB Memory Tuning): En Spring Boot, define las flags JVM mediante
JAVA_TOOL_OPTIONS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0"para evitar que la JVM ignore los límites de memoria de Docker y sea terminada por el OOM Killer. En MariaDB, ajusta el parámetroinnodb_buffer_pool_sizeacorde a la RAM asignada al contenedor (usualmente 50-70% de su límite).
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