Cómo usar MySQL con Docker-Compose

30 gen 2024 3 min di lettura
Cómo usar MySQL con Docker-Compose
Indice dei contenuti

Introducción

En el campo del desarrollo de software y la gestión de bases de datos, la integración de MySQL con Docker Compose ha revolucionado la forma en que gestionamos bases de datos en entornos contenedores. Este artículo proporciona una guía completa sobre el uso eficaz de MySQL con Docker Compose, enfatizando el uso del script docker-entrypoint-initdb.d, implementando almacenamiento persistente y personalizando la configuración my.cnf.

¿Por qué utilizar MySQL con Docker?

Consistencia: los contenedores Docker garantizan que MySQL se ejecute de la misma manera, independientemente de dónde se implemente. Aislamiento: cada instancia de MySQL se ejecuta en su propio contenedor, aislado del sistema host y de otros contenedores. Escalabilidad: escale fácilmente sus bases de datos MySQL administrando múltiples contenedores con Docker Compose.

Paso 1: definir el archivo Docker Compose

Cree un archivo docker-compose.yml en el directorio de su proyecto. Este archivo define el servicio MySQL y sus configuraciones.


version: '3.8'

 services:
 db:
 image: mysql:8
 command: --default-authentication-plugin=mysql_native_password
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: secure_password
 MYSQL_DATABASE: mydb
 MYSQL_USER: myuser
 MYSQL_PASSWORD: password
 ports:
 - "13306:3306"
 volumes:
 - mysql_data:/var/lib/mysql
 -./db/init.sql:/docker-entrypoint-initdb.d/init.sql
 -./db/my.cnf:/etc/mysql/my.cnf

 volumes:
 mysql_data:

Paso 2: usar el script docker-entrypoint-initdb.d

El directorio docker-entrypoint-initdb.d es una ubicación especial en la imagen de MySQL. Los scripts y archivos SQL ubicados en este directorio se ejecutan automáticamente durante el primer inicio del contenedor. Esta funcionalidad es fundamental para inicializar una base de datos con un esquema o conjunto de datos predefinido.

  1. Cree un directorio "initdb" en la carpeta de su proyecto.
  2. Agregue sus scripts SQL o scripts de inicialización dentro de este directorio.
  3. Estos scripts se ejecutarán en orden alfabético la primera vez que se inicie el contenedor.

Paso 3: implementar almacenamiento persistente

El almacenamiento persistente es esencial para conservar los datos de la base de datos incluso después de que se detenga o elimine el contenedor Docker. En el archivo docker-compose.yml, la siguiente línea logra esto:

volumes:
 - db_data:/var/lib/mysql

Esta línea especifica un volumen con nombre ( db_data ) que garantiza la persistencia de los datos. Cuando el contenedor MySQL se detiene o reinicia, los datos permanecen intactos en este volumen.

Paso 4: Personalizando su configuración my.cnf

Personalizar su configuración de MySQL es fácil con Docker. Para utilizar un my.cnf personalizado:

Cree un archivo my.cnf en el directorio de su proyecto con sus configuraciones personalizadas.

Monte este archivo en su contenedor agregando la siguiente línea a su servicio en el archivo docker-compose.yml:

volumes:
 -./my.cnf:/etc/mysql/my.cnf

Esta línea asigna su archivo my.cnf local al que está dentro del contenedor, lo que le permite cambiar las configuraciones de MySQL según sea necesario.

Paso 5: ejecutar y administrar el contenedor MySQL

Una vez que todo esté configurado, ejecute su contenedor MySQL usando Docker Compose:

docker-compose up -d

Este comando inicia su instancia de MySQL en modo independiente. Para detener el contenedor, use Docker-Compose Down.

Paso 6: Conéctese al servidor MySQL

Para conectarse a la base de datos MySQL dentro de un contenedor Docker usando el comando docker exec, primero deberá averiguar el nombre o ID de su contenedor MySQL en ejecución. Luego puede usar Docker Exec para ejecutar el cliente MySQL dentro de este contenedor, lo que le permite conectarse directamente al servidor MySQL. Así es como puedes hacerlo:

Lista de contenedores en ejecución: primero identifique el contenedor que ejecuta MySQL. Puede enumerar todos los contenedores en ejecución usando:

docker ps

Busque el contenedor que ejecuta MySQL (en su caso, debería llamarse algo así como db o tener mysql en el nombre de la imagen).

Conéctese al contenedor MySQL: use Docker Exec para iniciar una sesión de cliente MySQL dentro del contenedor. El formato del comando es:

docker exec -it [container_name_or_id] mysql -u[username] -p

Para su configuración, asumiendo que el nombre de su contenedor es db y desea conectarse como root, el comando sería:

docker exec -it db mysql -uroot -p

Se le pedirá que ingrese su contraseña. Para el usuario root, según su archivo docker-compose.yml, es secure_password.

Interactuar con MySQL: después de iniciar sesión, puede ejecutar cualquier comando de MySQL para administrar bases de datos, tablas y datos.

Conclusión

La integración de MySQL con Docker Compose proporciona un enfoque simplificado para administrar bases de datos relacionales en un entorno en contenedores. Al aprovechar el script docker-entrypoint-initdb.d, implementar el almacenamiento persistente y personalizar el archivo my.cnf, puede administrar y escalar eficazmente sus bases de datos MySQL con facilidad y precisión. Esta configuración no sólo simplifica los flujos de trabajo de desarrollo sino que también mejora la portabilidad y escalabilidad de sus aplicaciones.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.