El repositorio incluye un archivoDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/Miercoles-Proyecto/llms.txt
Use this file to discover all available pages before exploring further.
docker-compose.yml listo para usar que levanta MySQL 8 y phpMyAdmin con un solo comando. Al iniciar por primera vez, Docker inyecta automáticamente los scripts database/schema.sql y database/data.sql, creando todas las tablas y cargando los datos iniciales (roles, usuarios de prueba, categorías y productos) sin ninguna intervención manual. Esta es la forma recomendada de preparar la base de datos en entornos de desarrollo.
Archivo docker-compose.yml
El siguiente es el contenido completo del archivo de orquestación tal como está en el repositorio:¿Qué levanta el Compose?
tienda-mysql
Contenedor MySQL 8.0 accesible en
localhost:3306. Crea la base de datos tienda_db con el usuario tienda_user / tienda123 y el usuario root root / tienda123. El volumen mysql_data persiste los datos entre reinicios.tienda-phpmyadmin
Panel web de administración phpMyAdmin expuesto en el puerto
8081. Arranca solo después de que el healthcheck de MySQL sea exitoso gracias a depends_on: condition: service_healthy.Inicialización automática de datos
Al crear el contenedor por primera vez, MySQL ejecuta los scripts montados en/docker-entrypoint-initdb.d/ en orden numérico:
| Orden | Archivo | Contenido |
|---|---|---|
01 | database/schema.sql | Crea tablas, claves primarias, foráneas e índices |
02 | database/data.sql | Inserta roles, usuarios de prueba, categorías y productos iniciales |
Los scripts de inicialización solo se ejecutan una vez, cuando el volumen
mysql_data está vacío (primera ejecución). Si el volumen ya existe, Docker omite los scripts aunque hayas modificado los archivos SQL.Cómo iniciar los servicios
Posiciónate en la raíz del proyecto
Abre una terminal y navega al directorio raíz del repositorio, donde se encuentra el archivo
docker-compose.yml.Levanta los contenedores en segundo plano
Ejecuta el siguiente comando para iniciar MySQL y phpMyAdmin de forma desacoplada:Docker descargará las imágenes
mysql:8.0 y phpmyadmin:latest si no las tienes localmente, creará la red tienda-network y el volumen mysql_data, y arrancará ambos contenedores.Espera a que el healthcheck de MySQL pase
El contenedor Espera hasta que el campo
tienda-phpmyadmin no arrancará hasta que MySQL responda correctamente al healthcheck (mysqladmin ping). Puedes verificar el estado en tiempo real con:Status de tienda-mysql muestre healthy. El healthcheck se evalúa cada 10 segundos con un máximo de 5 reintentos (timeout de 5s cada uno).Accede a phpMyAdmin
Una vez que ambos contenedores estén en ejecución, abre tu navegador y visita:Inicia sesión con las credenciales:
- Usuario:
root - Contraseña:
tienda123
Cadena de conexión del backend
El backend Spring Boot se conecta a MySQL usando la siguiente JDBC URL configurada enapplication.properties:
| Parámetro | Valor | Descripción |
|---|---|---|
host | localhost | MySQL expuesto directamente al host en el puerto 3306 |
database | tienda_db | Base de datos creada por el Compose |
useSSL | false | Sin cifrado TLS (entorno local) |
serverTimezone | America/Lima | Zona horaria para conversión de fechas |
allowPublicKeyRetrieval | true | Necesario para mysql_native_password con connectors recientes |
characterEncoding | UTF-8 | Codificación de caracteres en la conexión JDBC |
El servidor MySQL arranca con
--character-set-server=utf8mb4 y --collation-server=utf8mb4_unicode_ci, lo que garantiza soporte completo para caracteres especiales, emojis y texto en español (tildes, ñ) tanto en el almacenamiento como en la conexión.Imagen de producción del backend (backend/Dockerfile)
El archivo docker-compose.yml levanta únicamente la base de datos y phpMyAdmin. El backend Spring Boot dispone de su propio backend/Dockerfile multi-etapa para construir una imagen de producción independiente:
Este
Dockerfile usa Gradle internamente para compilar el JAR. La imagen de ejecución se basa en eclipse-temurin:21-jre-jammy y expone el puerto 8080. El docker-compose.yml principal no incluye el servicio del backend — es exclusivamente para la base de datos y phpMyAdmin en desarrollo local.