Passo a passo para subir um banco de dados MySQL no Docker
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
, que é a porta padrão utilizada pelo MySQL.3306
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:
-
: define uma senha aleatória para o usuário root do MySQL.MYSQL_RANDOM_ROOT_PASSWORD
-
eMYSQL_USER
: cria um usuário com acesso restrito ao banco de dados.MYSQL_PASSWORD
-
: cria um banco de dados específico para a aplicação.MYSQL_DATABASE
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.