Docker-Compose com dados persistentes do MySQL

Docker-Compose com dados persistentes do MySQL

É importante manter os dados persistentes para os contêineres executando bancos de dados. Docker oferece opção para manter os arquivos de banco de dados persistentes sobre os volumes do docker ou armazenar arquivos diretamente na máquina host.

Use uma das opções abaixo para manter os dados MySQL persistentes mesmo depois de recriar ou excluir recipientes do Docker.

Opção 1 - Armazenamento de dados MySQL em volumes do docker

Os volumes do Docker são mecanismos preferidos pelo Docker para armazenar dados persistentes de contêineres do Docker. Você pode criar facilmente um volume do Docker em sua máquina host e conectar a um docker recipientes.

Vamos criar um arquivo do Docker-Compose no seu sistema com o seguinte conteúdo.

Docker-Compose.YML:

Versão: '3' Serviços: DB: Imagem: MySQL: 5.7 Container_name: DB Ambiente: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_pass: db_user_pass portas: - "6033: 3306" volumes: dbdata: dbdata:/vars: db_user_pass: - "6033: 3306" "
1234567891011121314151617Versão: '3' Serviços: DB: Imagem: MySQL: 5.7 Container_name: DB Ambiente: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass portas: - "6033: 3306" volumes: dbdata: dbdata:/vars:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata: dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/dbdata:/

A configuração acima definiu um volume de dados chamado "dbdata", que é anexado ao contêiner MySQL e montado no diretório/var/lib/mysql. Este é o diretório padrão usado pelo MySQL para armazenar todos os arquivos de dados.

Em seguida, execute abaixo o comando para iniciar o contêiner do Docker.

Docker -Compor Up -d 

Saída:

Criando rede "db_default" com o driver padrão criando volume "db_dbdata" com driver padrão criando db… feito 

Você pode ver os volumes do Docker executando o Commnad:

Docker Volume LS 

Opção 2 - Armazenamento de dados MySQL na máquina host

Recomendamos usar o volume de dados em vez de colocar arquivos na máquina host. Mas, se quiser, você pode manter os arquivos de banco de dados na máquina host. De qualquer forma.

Crie um diretório para manter seus arquivos de dados MySQL. Estou criando uma estrutura de diretório abaixo no diretório atual.

mkdir -p ./dados/db 

Em seguida, configure o Docker-Compose.YML para usar ./dados/db como volume para armazenar todos os arquivos criados pelo servidor MySQL. Em seguida, crie o arquivo de composição no diretório atual.

Docker-Compose.YML:

Versão: '3' Serviços: DB: Imagem: MySQL: 5.7 Container_name: DB Ambiente: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass portas: - "6033: 3306" volumes: - ./data/db:/var/lib/mysql
123456789101112131415Versão: '3' Serviços: DB: Imagem: MySQL: 5.7 Container_name: DB Ambiente: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass portas: - "6033: 3306" volumes: - ./data/db:/var/lib/mysql

Depois de criar o arquivo, basta executar o comando abaixo para iniciar o contêiner.

Docker -Compor Up -d 

Saída:

Criando rede "db_default" com o driver padrão criando db… feito 

Nesse caso, o contêiner MySQL cria todos os arquivos na máquina host em ./diretório de dados/db. Para visualizar esses arquivos, basta executar o comando abaixo.

ls -l ./dados/db DRWXR-X --- 2 SystemD-COREDUMP SYSTEMD-COREDUMP 4096 1º de julho 11:07 APP_DB -RW-R ----- 1 Systemd-coredump Systemd-Coredump 56 1 11:07 Auto.CNF -RW ------- 1 SystemD-COREDUMP Systemd-COREDUMP 1676 1º de julho 11:07 Ca-key.PEM-RW-R-R-- 1 Systemd-COREDUMP SYSTEMD-COREDUMP 1112 1º de julho 11:07 CA.PEM -RW-R-R-- 1 Systemd-COREDUMP SYSTEMD-COREDUMP 1112 1º de julho 11:07 Cert Client.PEM -RW ------- 1 SystemD-COREDUMP Systemd-COREDUMP 1680 1º de julho 11:07 Chave de cliente.PEM -RW-R ----- 1 SystemD-COREDUMP SystemD-COREDUMP 1346 1º de julho 11:07 IB_BUFFER_POOL -RW-R ----- 1 SystemD-COREDUMP Systemd-COREDUMP 50331648 1º de julho 11:07 IB_LOGFILE0 -RW- r ----- 1 SystemD-COREDUMP SystemD-COREDUMP 50331648 1º de julho 11:07 IB_LOGFILE1 -RW-R ----- 1 SystemD-COREDUMP Systemd-Coredump 79691776 1 de julho 11:07 IBDATA1 -RW-R --- -1 SystemD-coredump SystemD-coredump 12582912 1 de julho 11:07 IBTMP1 DRWXR-X --- 2 SystemD-COREDUMP SystemD-COREDUMP 4096 1º de julho 11:07 MySQL DRWXR-X --- 2 SystemD-coredump-coredump 4096 1 de julho 11:07 performance_schema -rw ------- 1 SystemD-coredump SystemD-COREDUMP 1680 1 11:07 private_key.PEM -RW-R-R-- 1 Systemd-COREDUMP SYSTEMDD-COREDUMP 452 1º de julho 11:07 Public_Key.PEM -RW-R-R-- 1 Systemd-COREDUMP SYSTEMD-COREDUMP 1112 1º de julho 11:07 servidor-cert.PEM -RW ------- 1 SystemD-COREDUMP SYSTEMD-COREDUMP 1680 1º de julho 11:07 Chave do servidor.PEM DRWXR-X --- 2 SystemD-COREDUMP SYSTEMD-COREDUMP 12288 1 11:07 SYS