Docker-compuesto con datos mysql persistentes

Docker-compuesto con datos mysql persistentes

Es importante mantener los datos persistentes para contenedores que ejecutan bases de datos. Docker proporciona su opción para mantener archivos de base de datos persistentes sobre los volúmenes de Docker o almacenar archivos directamente en la máquina host.

Use una de las siguientes opciones para mantener los datos MySQL persistentes incluso después de recrear o eliminar los contenedores Docker.

Opción 1: almacenar datos MySQL en volúmenes de Docker

El Docker de los volúmenes Docker es el mecanismo preferido por el Docker para almacenar datos persistentes de contenedores Docker. Puede crear fácilmente un volumen de Docker en su máquina host y adjuntar a Docker Containers.

Creemos un archivo Docker-Compose en su sistema con el siguiente contenido.

compuesto de acopolador.YML:

Versión: '3' Servicios: DB: Imagen: MySQL: 5.7 container_name: db environment: MYSQL_ROOT_PASSWORD: my_secret_password MYSQL_DATABASE: app_db MYSQL_USER: db_user MYSQL_PASSWORD: db_user_pass ports: - "6033:3306" volumes: - dbdata:/var/lib/mysql volumes: dbdata:
1234567891011121314151617Versión: '3' Servicios: DB: Imagen: MySQL: 5.7 Container_name: DB Environment: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass Ports: - "6033: 3306" volúmenes: - dbdata:/var/lib/lib/mysqlvolumes: dbdatates: dbdata: dbdata: dbdatha: dbdata: dbdata: dbdata: dbdata: dbdata: dBdata: dbdata: dblvolumes: dbdata: dbdata: var/lib/mysqlvolumes:

La configuración anterior definió un volumen de datos llamado "DBData", que se adjunta al contenedor MySQL y se monta en/var/lib/mysql directorio. Este es el directorio predeterminado utilizado por MySQL para almacenar todos los archivos de datos.

A continuación, ejecute el comando a continuación para iniciar el contenedor Docker.

Docker -compuesto -d -d 

Producción:

Creación de red "DB_DEFAULT" con el controlador predeterminado Creación de volumen "DB_DBDATA" con el controlador predeterminado creando DB ... Listo 

Puede ver los volúmenes de Docker ejecutando Commnad:

Docker Volumen LS 

Opción 2: almacenar datos MySQL en la máquina host

Recomendamos usar el volumen de datos en lugar de poner archivos en la máquina host. Pero, si lo desea, puede mantener archivos de base de datos en la máquina host. En cualquier caso, el contenedor de Docker se finaliza, puede relanzar Contener utilizando los archivos de datos existentes.

Cree un directorio para mantener sus archivos de datos MySQL. Estoy creando la siguiente estructura del directorio en el directorio actual.

mkdir -p ./data/db 

Luego configure Docker-Compose.YML para usar ./data/db como volumen para almacenar todos los archivos creados por el servidor MySQL. Siguiente Crear archivo de composición en el directorio actual.

compuesto de acopolador.YML:

Versión: '3' Servicios: DB: Imagen: MySQL: 5.7 Container_name: DB Environment: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass puertos: - "6033: 3306" volúmenes:: - ./data/db:/var/lib/mysql
123456789101112131415Versión: '3' Servicios: DB: Imagen: MySQL: 5.7 Container_name: DB Environment: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass puertos: - "6033: 3306" volúmenes:: - ./data/db:/var/lib/mysql

Después de crear el archivo, simplemente ejecute el siguiente comando para iniciar el contenedor.

Docker -compuesto -d -d 

Producción:

Creación de la red "DB_DEFAULT" con el controlador predeterminado creando DB ... hecho 

En este caso, el contenedor mysql crea todos los archivos en la máquina host en ./Directorio Data/DB. Para ver estos archivos, simplemente ejecute el siguiente comando.

LS -L ./data/db DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 4096 Jul 1 11:07 APP_DB -RW-R ----- 1 Systemd-Coredump Systemd-Coredump 56 Jul 1 11:07 Auto.CNF -RW ------- 1 Systemd-Coredump Systemd-Coredump 1676 Jul 1 11:07 CA-Key.PEM -RW-R-R-- 1 Systemd-Coredump Systemd-Coredump 1112 Jul 1 11:07 CA.PEM -RW-R-R-- 1 Systemd-Coredump Systemd-Coredump 1112 Jul 1 11:07 Cantero de cliente.PEM -RW ------- 1 Systemd-Coredump Systemd-Coredump 1680 Jul 1 11:07 CLIENTE CLAY.PEM -RW-R ----- 1 Systemd-Coredump Systemd-Coredump 1346 Jul 1 11:07 IB_BUFFER_POOL -RW-R ----- 1 Systemd-Coredump Systemd-Coredump 50331648 Jul 1 11:07 IB_LOGFILE0 -RW- R ----- 1 Systemd-Coredump Systemd-Coredump 50331648 Jul 1 11:07 IB_LOGFILE1 -RW-R ----- 1 Systemd-Coredump Systemd-Coredump 79691776 Jul 1 11:07 IBDATA1 -RW-R ---- -1 Systemd-Coredump Systemd-Coredump 12582912 Jul 1 11:07 IBTMP1 DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 4096 Jul 1 11:07 MySQL DRWXR-X --- 2 Systemd Systemd-Coredump 4096 1 de julio 11:07 Performance_schema -rw ------- 1 Systemd-Coredump Systemd-Coredump 1680 Jul 1 11:07 private_key.PEM -RW-R-R-- 1 Systemd-Coredump Systemd-Coredump 452 Jul 1 11:07 Public_Key.PEM -RW-R-R-- 1 Systemd-Coredump Systemd-Coredump 1112 Jul 1 11:07 Server-Cert.PEM -RW ------- 1 Systemd-Coredump Systemd-Coredump 1680 Jul 1 11:07 Clave de servidor.PEM DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 12288 Jul 1 11:07 SYS