MySQL + Adminer + Docker Compose: montando rapidamente um ambiente para uso
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 isto o Docker Compose:
PostgreSQL + pgAdmin 4 + Docker Compose: montando rapidamente um ambiente para uso
E aproveito este espaço para deixar aqui também um convite.
Dia 25/04/2019 (quinta-feira) às 21:30 — horário de Brasília — teremos mais um evento online gratuito no Canal .NET. Desta vez o MVP Luiz Carlos Faria fará uma apresentação sobre o uso de containers Docker como meio para simplificar a montagem de ambientes de Desenvolvimento.
Para efetuar a sua inscrição acesse a página do evento no Meetup. A transmissão acontecerá via YouTube, em um link a ser divulgado em breve.
Nesse novo post retomo essa abordagem, utilizando desta vez a versão 5.7 do MySQL e o Adminer. Para aqueles ainda não familiarizados com tal 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 se refere à 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 2 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 isto 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.
O comando docker-compose up -d efetuará a 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 exibirá 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 2 serviços/containers estarem em uma mesma rede do Docker permite que o Adminer referencie o servidor utilizando esta 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á então 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: