Passo a passo para subir um banco de dados MySQL no Docker

Por Gaspar Barancelli Junior em 10 de março de 2023

Subir um banco de dados MySQL em um contêiner Docker é uma prática comum entre desenvolvedores e equipes de infraestrutura. Isso porque essa abordagem oferece diversos benefícios, como a facilidade de criação e destruição de ambientes, escalabilidade e isolamento. No entanto, existem algumas boas práticas que devem ser seguidas para garantir que o contêiner esteja configurado de forma segura e eficiente. Neste post, vamos mostrar como subir o MySQL no Docker com as melhores práticas.

1. Utilize uma imagem oficial do MySQL

A primeira prática recomendada é utilizar uma imagem oficial do MySQL. Isso porque essas imagens são mantidas e atualizadas pela equipe responsável pelo MySQL, o que garante que elas estão configuradas de acordo com as melhores práticas de segurança e desempenho. Além disso, essas imagens também são validadas pela comunidade, o que aumenta a confiabilidade do seu ambiente.

Para baixar a imagem oficial do MySQL, basta executar o seguinte comando no terminal:

docker pull mysql/mysql-server

2. Defina uma senha forte para o usuário root

Ao iniciar o contêiner do MySQL, você precisa definir uma senha para o usuário root. É importante que essa senha seja forte o suficiente para garantir a segurança do seu ambiente. Para definir a senha, você pode utilizar a variável de ambiente MYSQL_ROOT_PASSWORD.

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=senha-forte mysql/mysql-server

3. Persista os dados em um volume

Os dados do MySQL são armazenados em um diretório dentro do contêiner. Para garantir que esses dados não sejam perdidos quando o contêiner for destruído, é recomendado que você utilize um volume para persistir os dados em um diretório do host.

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=senha-forte -v /caminho/para/o/diretorio:/var/lib/mysql mysql/mysql-server

4. Exponha apenas as portas necessárias

Ao expor as portas do MySQL, você está permitindo que o seu banco de dados seja acessado a partir de outros contêineres ou do host. No entanto, é importante que você exponha apenas as portas necessárias para minimizar os riscos de segurança. No caso do MySQL, você precisa expor a porta 3306, que é a porta padrão utilizada pelo MySQL.

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=senha-forte -v /caminho/para/o/diretorio:/var/lib/mysql -p 3306:3306 mysql/mysql-server

5. Configure as opções de segurança

O MySQL oferece diversas opções de segurança que devem ser configuradas para garantir a proteção do seu ambiente. Algumas das opções recomendadas são:

  • MYSQL_RANDOM_ROOT_PASSWORD: define uma senha aleatória para o usuário root do MySQL.

  • MYSQL_USER e MYSQL_PASSWORD: cria um usuário com acesso restrito ao banco de dados.

  • MYSQL_DATABASE: cria um banco de dados específico para a aplicação.

docker run -d --name mysql -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_USER=usuario -e MYSQL_PASSWORD=senha -e MYSQL_DATABASE=banco-de-dados -v /caminho/para/o/dire

6. Configurando variáveis de ambiente

Para facilitar a configuração do MySQL, é possível definir as variáveis de ambiente necessárias para o contêiner. Isso pode ser feito adicionando o seguinte comando ao comando docker run:

-e MYSQL_ROOT_PASSWORD=my-secret-pw

Este comando define a variável de ambiente MYSQL_ROOT_PASSWORD, que define a senha de root para o MySQL. Outras variáveis de ambiente, como MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE e outras, podem ser definidas da mesma maneira.

7. Usando docker-compose

Se você precisar executar vários contêineres juntos, é recomendável usar o docker-compose para gerenciar os contêineres. Com o docker-compose, você pode definir a configuração do contêiner em um arquivo YAML e usar um único comando para iniciar todos os contêineres. Aqui está um exemplo de arquivo docker-compose.yml para iniciar um contêiner MySQL:

version: '3'
services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_USER: usuario
      MYSQL_PASSWORD: senha
      MYSQL_DATABASE: banco-de-dados
      MYSQL_RANDOM_ROOT_PASSWORD: true
    ports:
      - "3306:3306"
    volumes:
      - /path/on/host:/var/lib/mysql

Com este arquivo docker-compose.yml, você pode iniciar o contêiner MySQL usando o seguinte comando:

docker-compose up -d

Conclusão

O Docker é uma excelente ferramenta para executar o MySQL em um ambiente de desenvolvimento ou produção. Com as melhores práticas apresentadas neste post, você pode configurar o MySQL no Docker de forma eficiente e segura. Lembre-se de sempre usar as últimas versões do MySQL e do Docker e de manter seus contêineres atualizados para evitar problemas de segurança.

// Livros recomendados relacionados ao assunto do post

// Compartilhe esse Post