Skip to content

🐬 MySQL (MariaDB) en Docker con Alpine

Este documento describe paso a paso cómo instalar, configurar e integrar MariaDB dentro de un contenedor Alpine Linux en Docker. Esta guía cumple con los criterios de evaluación de la UF2 (Implementación) y la UF4 (Documentación) del módulo de despliegue.


🐳 1. Acceder al contenedor mysql

Antes de nada, asegúrate de que el contenedor mysql esté en ejecución. Luego, accede a él:

docker exec -it mysql sh

Esto te abrirá una consola interactiva dentro del contenedor, permitiéndote ejecutar comandos como si estuvieras en un sistema Linux.

Acceso al contenedor


🛆 2. Instalación de MariaDB

Ahora debemos instalar MariaDB, que es un sistema de gestión de bases de datos compatible con MySQL, ideal para Laravel.

2.1 Actualizar repositorios de paquetes

apk update

![Actualización de paquetes](img/mysql-apk-update.png)

Este comando actualiza el índice de paquetes para que puedas descargar las últimas versiones disponibles.

2.2 Instalar MariaDB y herramientas necesarias

apk add mariadb mariadb-client nano
  • mariadb: instala el servidor de base de datos.
  • mariadb-client: permite conectarte mediante el comando mariadb.
  • nano: editor de texto básico útil en Alpine.

Instalación de MariaDB


📁 3. Preparación del entorno de MariaDB

Antes de iniciar el servidor, necesitas crear los directorios necesarios para que MariaDB funcione correctamente.

mkdir -p /run/mysqld
chown -R mysql:mysql /run/mysqld /var/lib/mysql
  • mkdir -p: crea /run/mysqld si no existe.
  • chown: asigna los permisos correctos de usuario y grupo (mysql:mysql) para evitar errores de ejecución.

Permisos y carpetas


🏐 4. Inicialización de la base de datos

Este paso prepara la estructura interna que necesita MariaDB para funcionar.

mysql_install_db --user=mysql --datadir=/var/lib/mysql
  • --user=mysql: define el usuario que inicializa el sistema.
  • --datadir: ubicación donde se guardan los archivos binarios de las bases de datos.

Este comando no lanza el servidor, solo prepara el sistema de ficheros.

Inicialización de la base de datos


▶️ 5. Iniciar MariaDB

Una vez todo esté preparado, puedes arrancar el servicio:

mysqld --user=mysql &

El símbolo & hace que el proceso corra en segundo plano. Puedes verificar que esté funcionando con:

ps aux | grep mysql

Deberías ver procesos como mysqld.

MariaDB iniciado


🫠 6. Acceder a la consola de MariaDB

Ya puedes acceder al sistema de base de datos con:

mariadb

Si todo ha ido bien, verás el prompt interactivo de MariaDB para ejecutar consultas SQL.

Consola de MariaDB


🛠️ 7. Crear base de datos y usuario para Laravel

Laravel necesita una base de datos y un usuario con permisos para operar. Desde el cliente mariadb, ejecuta:

CREATE DATABASE josue_db;
CREATE USER 'sail'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON josue_db.* TO 'sail'@'%';
FLUSH PRIVILEGES;

Explicación:

  • CREATE DATABASE josue_db; → Crea la base de datos para tu proyecto Laravel.
  • CREATE USER 'sail'@'%'... → Crea un usuario accesible desde cualquier IP.
  • GRANT ALL PRIVILEGES... → Le da control total sobre la base de datos.
  • FLUSH PRIVILEGES; → Aplica los cambios.

🔐 Puedes cambiar el nombre de usuario, la base de datos y la contraseña según tus preferencias.

Creación de usuario y base de datos


🔢 8. Verificar conexión desde Laravel

Ahora sal del contenedor mysql con exit, y entra al contenedor de Laravel:

docker exec -it laravel sh

Ejecuta las migraciones para asegurarte de que Laravel se conecta correctamente a la base de datos:

php artisan migrate

Esto creará las tablas por defecto (users, password_resets, etc.).

Migraciones exitosas


🔄 9. Reiniciar MariaDB (opcional)

Si necesitas reiniciar el servidor, puedes usar:

pkill mysqld
mysqld --user=mysql &

Esto detiene el proceso y lo arranca de nuevo. Útil si haces cambios en configuración o quieres reiniciar el entorno sin salir del contenedor.

MariaDB reiniciado


✅ Checklist Evaluación UF2/UF4

Requisito Cumplido
MariaDB instalado correctamente (Alpine)
Inicialización del sistema de datos
Base de datos josue_db creada
Usuario sail creado con permisos correctos
Laravel conectado a la base de datos
Documentación clara con capturas