Cómo instalar MySQL con Docker

Sep 2020

Levantar una base de datos con Docker es la manera más rápida de tener un entorno de programación listo para empezar a programar en un PC doméstico, sin realizar instalaciones que dejen restos de archivos y configuraciones a lo largo de todo el disco duro, simplificando enormemente los entornos de desarrollo y producción.

¿Y cómo se hace? Pues de forma resumida, Docker es una plataforma de código abierto en forma de máquina virtual que gestiona y ejecuta contenedores que empaquetan aplicaciones. What? Veamos el detalle…

Qué es Docker

Docker es un servicio de virtualización de aplicaciones dentro de unos denominados contenedores. Esto permite que las aplicaciones se ejecuten independientemente del host que los alberga. Cuando una aplicación está virtualizada su puesta en marcha por orquestadores que monitorizan el estado de las aplicaciones y la carga que soportan, fácilmente pueden levantar o apagar instancias en la nube para tolerar altas cargas de trabajo.

Docker está disponible sin coste, para las principales plataformas de escritorio y es una de las herramientas básicas de todo programador moderno. Revisa el artículo de instalación de docker para dejar tu estación de trabajo lista para desarrollar. O si quieres ampliar tus conocimientos acerca del uso de ésta revisa nuestro tutorial de Docker.

Requisitos para MySQL con Docker

Si eres usuario de Windows o Mac necesitarás tener instalado Docker Desktop en tu pc o portátil y éste debe tener cierta capacidad y potencia. Por otro lado, en el caso de que seas usuario de Windows, deberás tener la versión Professional para poder instalar Docker. Si no es así, visita el tutorial de instalación de ubuntu, el mejor sistema operativo para programar totalmente gratis y Open Source. Si eres usuario de Ubuntu o Debian asegúrate de tener en tu sistema Docker Compose también explicado en el tutorial de instalación de Docker.

Instalar MySQL con Docker

Para arrancar una base de datos MySQL con docker el proceso no puede ser más sencillo. Basta que cojamos la plantilla del fichero de configuración de Docker Compose que dejamos a continuación e invoques al comando que realizará todo el proceso.

version: '2'
services:
mysql:
image: 'mysql:latest'
restart: always
volumes:
- './mysql_data:/var/lib/mysql'
environment:
- MYSQL_ROOT_PASSWORD=secure_pass_here
ports:
- '3306:3306'

Guarda el fichero en local con el nombre docker-compose.yml en un directorio denominado <homeusuario>/docker/mysql si estás en Unix, o \docker\mysql si estás en Windows. La configuración **guarda los datos en el subdirectorio ./mysqldata** de forma permanentemente, puesto que si no, en cada reinicio del contenedor se perderían las bases de datos alojadas. Luego, posiciónate con un terminal de comandos en el mismo directorio que el fichero y ejecuta:

docker-compose up -d

El sistema, primero descargará la imagen de los repositorios públicos de Docker al ver que no está disponible localmente y luego procederá al arranque y a la apertura del puerto indicado en el fichero de configuración. La opción -d indica a Docker que se ejecute el servicio en segundo plano.

A partir de ese momento, utiliza tu interfaz gráfico preferido para conectar a la base de datos. Si no tienes ninguno puedes adquirir el cliente gratuito y multi base de datos DBeaver.

Verificar que el servicio MySQL está activo

Para verificar que el servicio está activo y el contenedor ejecutándose de forma normal, pruebe de ejecutar el siguiente comando de docker que muestra los contenedores en funcionamiento:

docker ps

Deberá aparecer al menos una entrada correspondiente al contenedor MySQL en estado activo como se muestra a continuación:

CONTAINER ID  IMAGE    COMMAND                 CREATED       STATUS       PORTS                               NAMES
327fd50443a7  mysql:5  "docker-entrypoint.s…"  29 hours ago  Up 6 hours   0.0.0.0:3306->3306/tcp, 33060/tcp   docker_mysql_1

De ser así, puede continuar con el resto de actividades, puesto que como se indica en el fragmento de texto anterior, el contenedor se encuentra ejecutándose (status up) y escuchando en el puerto 3306.

Conectar MySQL con DBeaver

Si tenemos el cliente SQL DBeaver, una vez arrancado el contenedor, podremos conectarnos con este cliente multi plataforma ingresando los siguientes datos:

Seleccionar nueva conexión para MySQL 8+
Server host: localhost
Port: 3306
User name: root
Password: secure_pass_here

A continuación darle «Probar conexión» y si todo ha ido bien, «Finalizar». A partir de ese momento el cliente gráfico SQL podrá abrir una conexión con el contenedor mientras éste esté en ejecución.

Si no tienes mucha experiencia en el manejo de bases de datos como MySQL te recomendamos que realices una lectura del tutorial de SQL para principiantes.

Siguientes pasos

Llegados a este punto, ya estás preparado para desarrollar una aplicación con Java. Visita la página de tutoriales y pasos para programar con Java donde hemos recopilado todos los recursos necesarios para despegar tu carrera profesional como programador.

Pero antes, conviene que crear una nueva base de datos y un usuario limitado con MySQL o con PostgreSQL para no conectar con el administrador, limitando así las acciones que pueden realizarse desde la aplicación. Muy interesante sobre todo cuando hay varias bases de datos y aplicaciones conectadas al mismo gestor, añadiendo una capa de seguridad más que conveniente.

Cómo instalar MySQL con Docker

¿Con ganas de seguir leyendo?

Nuestra guía de Java

Cerca de 450 páginas en un libro de tapa blanda que podrás utilizar para aprender a programar en Java desde cero sin conocimientos previos. Explicamos como usar las herramientas más usadas en el mundo empresarial, todas ellas son totalmente gratis y Open Source.

Aprende conceptos como TDD para desarrollar software con garantías. Conecta tus apps con JPA en bases de datos SQL. Integra tus proyectos con Maven y mantenlos bajo control con Git. Mantente al día con la programación funcional de Java 8+.

Nuestra guía de Java
Libro Javañol