Levantar MariaDB en local
El archivo docker-compose.db.yml
En la raíz del proyecto (Ris3Cat/):
services:
mariadb-local:
image: mariadb:10.11
container_name: mariadb-zertipower-local
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: zertipower-dev
ports:
- "3306:3306"
volumes:
- mariadb_data:/var/lib/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 20
volumes:
mariadb_data:
driver: local
Diferencias respecto a la especificación original
- Se ha omitido la clave
version: '3.8': está obsoleta en Docker Compose v2 y provoca un aviso en cada ejecución. - Se ha añadido un
healthcheck, que permite esperar a que la base de datos esté realmente lista antes de restaurar. Sin él, restaurar demasiado pronto falla.
Arranque
docker compose -f docker-compose.db.yml up -d
Esperar a que el contenedor esté sano:
docker inspect --format='{{.State.Health.Status}}' mariadb-zertipower-local
Cuando devuelva healthy, la base de datos acepta conexiones.
Restaurar un volcado
Para restaurar el volcado completo de producción:
docker exec -i mariadb-zertipower-local mariadb -u root -proot zertipower-dev < backup_zertipower_prod.sql
Para el entorno de desarrollo habitual, usa en su lugar el seed mínimo, que es autocontenido:
docker exec -i mariadb-zertipower-local mariadb -u root -proot < sql/seed_minimo.sql
Versiones: 10.4 en producción, 10.11 en local
Producción ejecuta MariaDB 10.4.13 y en local usamos 10.11. Restaurar un volcado de 10.4 en 10.11 funciona (la compatibilidad hacia adelante está soportada), pero conviene tenerlo presente: lo contrario —restaurar un volcado de 10.11 en un 10.4— no está garantizado.
Comandos útiles
Abrir una consola SQL:
docker exec -it mariadb-zertipower-local mariadb -u root -proot zertipower-dev
Ver los registros del contenedor:
docker logs --tail 50 mariadb-zertipower-local
Borrar la base de datos y empezar de cero (destruye los datos locales):
docker compose -f docker-compose.db.yml down -v