Em um artigo anterior, abordei a montagem de um ambiente de Desenvolvimento/Testes baseado em containers Docker com o PostgreSQL e o pgAdmin 4, utilizando, para isso, o Docker Compose:
Neste novo artigo retomo essa abordagem, utilizando, desta vez, a versão 5.7 do MySQL e o Adminer. Para aqueles ainda não familiarizados com essa ferramenta, o Adminer é uma solução acessível via browser para a administração do MySQL e distribuída gratuitamente sob a forma de um arquivo PHP/imagem Docker.
Neste exemplo serão utilizadas as imagens MySQL e Adminer:
Na listagem a seguir está o conteúdo do arquivo docker-compose.yml que permitirá a criação do ambiente citado (MySQL + Adminer). Os testes descritos neste artigo foram realizados no Ubuntu Desktop 18.04:
- O serviço mysqlsrv refere-se à instância do MySQL 5.7 a ser criada para acesso na porta 3306
- Já o serviço adminer corresponde ao container que permitirá a execução do Adminer (imagem adminer) na porta 8080
- Nas seções environment dos serviços mysqlsrv e adminer, foram definidas configurações (variáveis de ambientes) necessárias para a geração dos dois containers
- As imagens referenciadas serão baixadas caso ainda não existam no ambiente a partir do qual o Docker Compose foi executado
- Foi especificado ainda um volume para mysqlsrv, indicando, com isso, o diretório no Ubuntu Desktop em que serão gravados os arquivos de dados (/home/renatogroffe/Desenvolvimento/Docker/Volumes/MySql)
- Por meio da network mysql-compose-network acontecerá a comunicação entre os containers mysqlsrv e adminer
version: '3'
services:
mysqlsrv:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "MySql2019!"
MYSQL_DATABASE: "testedb"
ports:
- "3306:3306"
volumes:
- /home/renatogroffe/Desenvolvimento/Docker/Volumes/MySql:/var/lib/mysql
networks:
- mysql-compose-network
adminer:
image: adminer
ports:
- 8080:8080
networks:
- mysql-compose-network
networks:
mysql-compose-network:
driver: bridge
O comando docker-compose up -d cuidará da criação da network e dos containers esperados (baixando, inclusive, imagens necessárias ao não encontrar as mesmas, o que não foi o caso para esse teste):
Com a instrução docker network ls podemos confirmar que a rede mysql-compose-network foi criada com sucesso (como ambientemysql_mysql-compose-network, resultado da concatenação com o nome do diretório em que se encontra o arquivo docker-compose.yml):
Já o comando docker-compose ps mostrará que os containers do MySQL (porta 3306) e do Adminer (porta 8080) foram gerados corretamente e se encontram em execução:
E, finalmente, a próxima imagem traz os arquivos e diretórios criados para o volume definido no arquivo docker-compose.yml:
Testando o ambiente
Um teste de acesso via browser ao Adminer (http://localhost:8080) exibirá a tela inicial desta solução:
Em Server, informar o nome do container do MySQL (mysqlsrv), já que o fato dos dois serviços/containers estarem em uma mesma rede do Docker, permite que o Adminer referencie o servidor utilizando essa identificação.
Preencher ainda a senha (Password) com o valor indicado em MYSQL_ROOT_PASSWORD no arquivo docker-compose.yml:
Concluído o processo de login, aparecerá o banco de dados testedb (também especificado em docker-compose.yml, através da variável de ambiente MYSQL_DATABASE) como uma das opções disponíveis: