Instalar MySQL con contenedores de Docker

Iniciar una instancia de servidor mysql

Iniciar una instancia MySQL es simple:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Donde some-mysql está el nombre que se le va a asignar al contenedor, my-secret-pwes la contraseña que se establecerá para el usuario root de MySQL y tag es la etiqueta que especifica la versión de MySQL que se desea.

Conéctese a MySQL desde el cliente de línea de comandos de MySQL

El siguiente comando inicia otra instancia de contenedor mysql y ejecuta el mysql cliente de línea de comandos en el contenedor original mysql, lo que le permite ejecutar instrucciones SQL en su instancia de base de datos:

$ docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p

Donde some-mysql está el nombre del contenedor original mysql (conectado a la some-networkred Docker).

Esta imagen también se puede utilizar como cliente para instancias remotas o que no sean de Docker:

$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

Ejemplo docker-compose.ymlpara mysql:

# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Ejecutar docker stack deploy -c stack.yml mysql(o docker-compose -f stack.yml up), esperar a que se inicialice por completo y visitar http://swarm-ip:8080, http://localhost:8080o http://host-ip:8080(según corresponda).

Acceso al shell del contenedor y visualización de registros de MySQL

El comando docker exec permite ejecutar comandos dentro de un contenedor de Docker. La siguiente línea de comando dará un shell bash dentro del contenedor mysql:

$ docker exec -it some-mysql bash

El registro está disponible a través del registro del contenedor de Docker:

$ docker logs some-mysql

Usando un archivo de configuración de MySQL personalizado

La configuración predeterminada para MySQL se puede encontrar en /etc/mysql/my.cnf, que puede tener !includedir directorios adicionales como /etc/mysql/conf.do /etc/mysql/mysql.conf.d. Inspeccionar los archivos y directorios relevantes dentro de la imagen mysql para obtener más detalles.

Si /my/custom/config-file.cnf es la ruta y el nombre de su archivo de configuración personalizado, puede iniciar su contenedor mysql de esta manera (tomar en cuenta que en este comando solo se usa la ruta del directorio del archivo de configuración personalizado):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Esto iniciará un nuevo contenedor some-mysql donde la instancia de MySQL usa la configuración de inicio combinada de /etc/mysql/my.cnfy /etc/mysql/conf.d/config-file.cnf, con la configuración de este último teniendo prioridad.

Configuración sin cnfarchivo

Muchas opciones de configuración se pueden pasar como banderas a mysqld. Esto dará la flexibilidad de personalizar el contenedor sin necesidad de un cnf archivo. Por ejemplo, si se quiere cambiar la codificación y la intercalación predeterminadas para que todas las tablas usen UTF-8 ( utf8mb4), simplemente ejecutar lo siguiente:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Si se quiere ver una lista completa de las opciones disponibles, simplemente ejecute:

$ docker run -it --rm mysql:tag --verbose --help

Enlace de referencia

Last updated