Banco de Dados

26 abr, 2019

MySQL + Adminer + Docker Compose: montando rapidamente um ambiente para uso

Publicidade

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:

Referências