Utilização do Docker Compose para Implementar um Servidor MariaDB
- #Docker
- #MySQL
Introdução
A utilização de contêineres revolucionou o desenvolvimento de software, permitindo que as aplicações sejam construídas, distribuídas e executadas de forma mais eficiente e consistente. Entre as ferramentas que facilitam esse processo, Docker e Docker Compose se destacam. Este artigo explora a configuração do MariaDB usando Docker Compose, detalha suas vantagens e diferenças em relação ao MySQL, e apresenta uma análise aprofundada do arquivo de configuração my.cnf e das especificações do docker-compose.yml.
Docker e Docker Compose
O que é Docker?
Docker é uma plataforma que automatiza a construção, distribuição e execução de aplicações dentro de contêineres. Cada contêiner encapsula uma aplicação e todas as suas dependências, garantindo que ela seja executada da mesma maneira em qualquer ambiente. Isso resolve problemas comuns relacionados à compatibilidade e configuração.
Vantagens do Docker
- Isolamento: Contêineres são isolados uns dos outros, minimizando conflitos de dependências.
- Portabilidade: As aplicações podem ser movidas entre ambientes sem problemas, garantindo que funcionem de maneira consistente.
- Escalabilidade: É fácil replicar contêineres, facilitando a escala horizontal das aplicações.
- Eficiência: Os contêineres compartilham o kernel do sistema operacional, sendo mais leves do que máquinas virtuais.
O que é Docker Compose?
Docker Compose é uma ferramenta que permite definir e executar aplicações que utilizam múltiplos contêineres. A configuração é feita através de um arquivo YAML (docker-compose.yml), onde todos os serviços, redes e volumes da aplicação são especificados. Isso simplifica a orquestração e a gestão de aplicações complexas.
Vantagens do Docker Compose
- Simplicidade: A configuração de serviços complexos é centralizada em um único arquivo, tornando a gestão mais intuitiva.
- Facilidade de uso: Com comandos simples como docker-compose up, todos os serviços podem ser iniciados simultaneamente.
- Configuração em Camadas: O Compose permite uma clara separação entre definições de serviços, redes e volumes, melhorando a legibilidade.
Comparação entre MySQL e MariaDB
O que é MySQL?
MySQL é um dos sistemas de gerenciamento de banco de dados relacional (RDBMS) mais populares do mundo. É amplamente utilizado em aplicações web devido à sua robustez, escalabilidade e confiabilidade.
O que é MariaDB?
MariaDB é um fork do MySQL, criado após a aquisição do MySQL pela Oracle. Ele foi projetado para ser totalmente compatível com MySQL, mas com melhorias de desempenho e novos recursos. A comunidade do MariaDB é ativa, resultando em atualizações frequentes e inovações.
Diferenças Chave
- Licenciamento: MySQL é propriedade da Oracle, enquanto MariaDB é totalmente open-source.
- Desempenho: MariaDB oferece melhor desempenho em operações complexas e alta concorrência.
- Recursos: MariaDB introduz novos tipos de armazenamento e funcionalidades que não estão presentes nas versões mais antigas do MySQL.
Configuração do MariaDB no my.cnf
O arquivo de configuração my.cnf é essencial para ajustar o comportamento do MariaDB. Vamos analisar suas seções e configurações comuns em detalhe.
Estrutura do my.cnf
[mysqld]
# Configurações Gerais
user = mysql
port = 3306
bind-address = 0.0.0.0
# Ajustes de Performance
innodb_buffer_pool_size = 512M
max_connections = 150
query_cache_size = 64M
thread_cache_size = 8
tmp_table_size = 64M
max_heap_table_size = 64M
# Logs
log_error = /var/log/mysql/error.log
general_log = 1
general_log_file = /var/log/mysql/mysql.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
# Replicação
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
Descrição das Seções e Configurações
- Configurações Gerais:
- Ajustes de Performance:
- Logs:
- Replicação:
Configuração do Docker Compose para MariaDB
A configuração do MariaDB usando Docker Compose é feita no arquivo docker-compose.yml. Vamos analisar a configuração específica e suas implicações:
version: '3.8'
services:
mariadb:
container_name: mariadb
image: mariadb:10.5
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD:-BR#12345}"
MYSQL_DATABASE: "${MYSQL_DATABASE:-mariadb}"
MYSQL_USER: "${MYSQL_USER:-rodolfo}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD:-BR#12345}"
ports:
- "3306:3306"
volumes:
- .docker/mariadb/data:/var/lib/mysql
- .docker/mariadb/config/my.cnf:/etc/mysql/custom.cnf
- .docker/mariadb/logs:/var/log/mysql
- .docker/mariadb/backups:/backups
- .docker/mariadb/dumps:/dumps
networks:
- skynet
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "${MYSQL_USER:-rodolfo}", "-p${MYSQL_PASSWORD:-BR#12345}" ]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
skynet:
driver: bridge
Descrição das Configurações do Docker Compose
- Imagem e Versão:
- Variáveis de Ambiente:
- Portas:
- Volumes:
var/log/mysql**: Armazena os logs do MariaDB, facilitando o monitoramento.
- /backups e /dumps: Diretórios dedicados para armazenar backups e dumps do banco de dados.
- Redes:
- Healthcheck:
Melhores Práticas
- Segurança: Utilize sempre senhas complexas e armazene-as de forma segura. Evite expor informações sensíveis em arquivos de configuração.
- Backup Regular: Implemente rotinas de backup automatizadas para prevenir perda de dados. Ferramentas como mysqldump ou soluções de replicação devem ser consideradas.
- Atualizações: Mantenha o MariaDB e suas dependências atualizados para garantir segurança e estabilidade.
- Monitoramento: Use ferramentas de monitoramento para rastrear a performance do banco de dados e detectar problemas antes que se tornem críticos.
- Documentação: Mantenha uma documentação clara sobre configurações e procedimentos, facilitando a manutenção e a transferência de conhecimento entre equipes.
Conclusão
A integração de Docker Compose com MariaDB proporciona uma solução eficaz e flexível para o gerenciamento de bancos de dados em ambientes de desenvolvimento e produção. A personalização do MariaDB através do arquivo my.cnf permite ajustes finos que podem otimizar a performance e a segurança do banco de dados. Com a adoção de melhores práticas, é possível criar um ambiente de banco de dados resiliente, eficiente e seguro, adequado para atender às crescentes demandas do desenvolvimento moderno de software.
Referências
- Docker. (n.d.). Docker Compose Documentation. Retrieved from https://docs.docker.com/compose/
- MariaDB Foundation. (n.d.). MariaDB Documentation. Retrieved from https://mariadb.com/kb/en/documentation/
- MySQL. (n.d.). MySQL Documentation. Retrieved from https://dev.mysql.com/doc/
- Kelleher, M. (2019). Docker in Action. Manning Publications.
- Biedenkapp, A. (2019). Mastering MariaDB. Packt Publishing.
- Muneer, M. (2020). Hands-On Docker for Microservices with Python. Packt Publishing.



