Contenedor Docker con MySQL (Guía Docker Compose)

Contenedor Docker con MySQL (Guía Docker Compose)
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:latest es 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/mysql para datos y /etc/mysql/conf.d para 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