Contenedor Docker con MySQL (Guía Docker Compose)
Configura un contenedor Docker con MySQL para gestionar bases de datos de forma eficiente y segura. Este tutorial te ofrece una guía paso a paso para la implementación y administración.
¿Qué es MySQL?
MySQL es un sistema de gestión de bases de datos relacional (RDBMS) desarrollado por Oracle Corporation y es ampliamente considerada como la base de datos open source más popular del mundo, especialmente en entornos de desarrollo web.
Creando el contenedor con docker-compose
1. Preparación del Directorio
Creamos un directorio para alojar el fichero docker-compose.yml y las carpetas para la persistencia de datos y la configuración.
mkdir -p /opt/mysql
cd /opt/mysql
2. Fichero docker-compose.yml
Añadimos el fichero docker-compose.yml.
⚠️ Advertencia de Seguridad: Nunca utilices contraseñas reales directamente en el fichero docker-compose.yml en producción. Se recomienda usar variables de entorno o Docker Secrets.
version: "3.3"
services:
mysql:
container_name: mysql_container
restart: always
# Usamos la imagen oficial de MySQL, especificando una versión si es necesario (ej: mysql:8.0)
image: mysql:latest
volumes:
# Persistencia de los datos de la base de datos
- /srv/mysql/data:/var/lib/mysql
# Persistencia de ficheros de configuración específicos
- /srv/mysql/mysqlconf:/etc/mysql/conf.d
ports:
- "13306:3306" # Mapeo de puertos (Servidor:Contenedor)
environment:
# ¡Configurar una contraseña fuerte!
MYSQL_ROOT_PASSWORD: 'passwordroot'
Explicación de Parámetros:
- services: Define los contenedores, en este caso sólo
"mysql". - container_name: Nombre asignado al contenedor para una fácil referencia (ej.,
mysql_container). - image: Nombre de la imagen de Docker Hub (
mysql:latestes la recomendación actual). - ports: Referencia de los puertos externos con los internos del contenedor. Conectamos el puerto 13306 del servidor con el puerto estándar 3306 del contenedor.
- volumes: Conectamos los directorios del contenedor (
/var/lib/mysqlpara datos y/etc/mysql/conf.dpara configuración) con directorios del servidor, asegurando la persistencia de datos y la configuración externa. - restart:
"always"asegura que el contenedor se reinicie siempre que falle o tras un reinicio del sistema. - MYSQL_ROOT_PASSWORD: Variable de entorno para configurar la contraseña del usuario
root.
3. Crear y Arrancar el Contenedor
Creamos y arrancamos el contenedor con el siguiente comando:
docker-compose up -d
4. Verificación y Acceso
Listamos los contenedores Docker para ver que esté funcionando:
docker ps
Ahora comprobamos si podemos conectarnos a la consola de MySQL del contenedor (reemplaza mysql_containername por el nombre real de tu contenedor):
docker exec -it mysql_containername mysql -u root -p
Si introduces la contraseña (passwordroot) y accedes a la consola de MySQL, significa que está funcionando correctamente.
5. Gestión de la Configuración
Si necesitas realizar algún cambio en el fichero de configuración, te diriges a la ruta del servidor /srv/mysql/mysqlconf que hemos mapeado. Una vez realizados, reinicias el contenedor para aplicar los cambios:
docker restart mysql_container