MySQL desde un Docker container
August 18, 2020
Docker puede ser una herramienta útil para empaquetar aplicaciones y todas las dependencias en un entorno aislado, que puede enviarse e implementarse en cualquier sistema o servidor.
Esto asegura la portabilidad y hace que ejecutar la aplicación sea extremadamente fácil y sin complicaciones.
Paso 1 - Crear un volumen
Docker gestiona la persistencia de la información de una manera muy simple, cada imágen y contenedor que tengamos en nuestro equipo se conservarán hasta que los borremos.
Crearemos un espacio en el host
donde alojaremos y persistiremos la informacion generada en el contenedor, no el contenedor en si.
Creamos un volumen para no perder la informacion al terminar los procesos:
$ docker volume create mysql-db-data
Paso 2 - Configuremos la BD
Descargamos la imagen de Docker con MySQL y agregamos el volumen para persistir los datos.
$ docker run -d -p 3306:3306 --name mysql-db -e MYSQL_ROOT_PASSWORD=secret --mount src=mysql-db-data,dst=/var/lib/mysql mysql
Paso 3 - Cargar la Base de datos dentro del contenedor:
Si estas en Windows:
& cmd.exe /c "docker exec -i mysql-db mysql -psecret pollitos < pollitos.sql"
Si estas en Linux/Unix
& docker exec -i mysql-db mysql -psecret pollitos < pollitos.sql
Donde:
- exec: El comando docker exec ejecuta un nuevo comando en un contenedor en ejecución.
- -it Docker permite ejecutar un contenedor en modo interactivo. Esto significa que puede ejecutar comandos dentro del contenedor mientras aún se está ejecutando.
- mysql -p: es el comando para entrar a la consola de mysql con el usuario root(si has trabajado con mysql en consola es lo mismo).
Luego podemos ingresar a la base de datos con el siguiente comando:
$ docker exec -it mysql-db mysql -p
Y de esta forma, tendriamos nuestro Container de MySQL el cual podemos acceder a traves de Workbench o DBeaver y podemos hacer uso del mismo a traves de 127.0.0.1:3306
y utilizarlo conectado otra aplicación.