Instalar MySQL con contenedores de Docker
Iniciar una instancia de servidor mysql
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-pw
es 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-network
red 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.yml
para 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:8080
o 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.d
o /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.cnf
y /etc/mysql/conf.d/config-file.cnf
, con la configuración de este último teniendo prioridad.
Configuración sin cnf
archivo
cnf
archivoMuchas 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