| Data de elaboração | 12/12/2023 |
| Responsável pelo estudo | Renato Nascimento de Lima |
| Equipe do estudo | Renato Nascimento de Lima, Vinicius Rosa |
| Alvos | Portal Diof, WordPress |
| Origem | Eu, Esquadrão Suicida, preciso realizar estudo técnico para viabilizar o Portal do Diof no Docker |
| Objetivo | Avaliar a estratégia de migração mais adequada e realizar uma análise eficiente para criar os containers do banco e do projeto WordPress do Portal do Diof. |
| Documentação correlata | https://wiki.setic.ro.gov.br/pt-br/home/spaces/code/gc/estudos/es23 |
| Observações |
Este estudo tem como objetivo principal realizar a migração do Portal Diof, atualmente baseado em WordPress, para um ambiente Dockerizado. A iniciativa visa otimizar a portabilidade, escalabilidade e padronização do ambiente de desenvolvimento, teste e produção.
Ao adotar a estrutura do Docker para o Portal Diof, pretendemos explorar os benefícios do isolamento de contêineres, simplificação do gerenciamento de dependências e facilitação do processo de deployment. O estudo busca detalhar os passos necessários para a criação de ambientes controlados e consistentes, permitindo uma infraestrutura mais eficiente e flexível para o desenvolvimento e operação do website.
A migração para o Docker visa oferecer maior flexibilidade na gestão de recursos, facilitar a colaboração entre equipes de desenvolvimento, e fornecer uma estrutura mais ágil e escalável para a manutenção contínua do Portal Diof.
A mudança nos paradigmas de desenvolvimento e infraestrutura tem impulsionado a busca por soluções ágeis e eficientes na gestão de websites e aplicações online. Neste contexto, o presente estudo foca na transição do Portal Diof, atualmente baseado em WordPress, para uma estrutura Dockerizada.
Esta introdução visa destacar a importância da migração para o Docker, apresentando os desafios enfrentados pelo Portal Diof no ambiente atual e os benefícios esperados com a adoção desta nova abordagem. Ao longo deste estudo, serão exploradas as etapas para criar um ambiente Docker otimizado, visando aprimorar a manutenção, escalabilidade e portabilidade do Portal Diof.
Para implementar um ambiente Docker para um website WordPress, é necessário os seguintes elementos:
docker-compose.yml para definir os serviços, e um arquivo .env para variáveis de ambiente, como configurações de banco de dados, senhas e outros parâmetros específicos.Com esses elementos, o desenvolvedor estará pronto para criar um ambiente Docker para o WordPress e aproveitar os benefícios de um ambiente modular, portátil e escalável.
Link para download do Docker: https://www.docker.com/products/docker-desktop/
Levando em consideração um cenário onde o Docker já esteja instalado na máquina, utilize uma ide para criar os arquivos docker-compose.yml e os arquivos .env dentro do projeto WordPress, levando em consideração que nesse projeto teremos 3 ambientes, 1 para desenvolvimento, outro para staging e por último produção.
Link para download: https://code.visualstudio.com/download
Script de exemplo para o arquivo docker-compose.yml
version: '3'
services:
# Serviço do WordPress
wordpress:
image: wordpress:latest
ports:
- "8080:80" # Porta do contêiner para o host
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wordpress:/var/www/html
# Serviço do banco de dados
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- ./mysql:/var/lib/mysql
Scripts de exemplo para os arquivos .env que terão as variáveis de ambientes:
Desenvolvimento
# Desenvolvimento
WORDPRESS_DB_HOST=db
WORDPRESS_DB_USER=devuser
WORDPRESS_DB_PASSWORD=devpass
WORDPRESS_DB_NAME=devdb
Staging:
# Staging
WORDPRESS_DB_HOST=db
WORDPRESS_DB_USER=stageuser
WORDPRESS_DB_PASSWORD=stagepass
WORDPRESS_DB_NAME=stagedb
Produção:
# Produção
WORDPRESS_DB_HOST=db
WORDPRESS_DB_USER=produser
WORDPRESS_DB_PASSWORD=prodpass
WORDPRESS_DB_NAME=proddb
Neste exemplo, o desenvolvedor define variáveis de ambiente diferentes para cada ambiente (desenvolvimento, staging, produção) no arquivo .env. No arquivo docker-compose.yml, as configurações do WordPress e do banco de dados usam essas variáveis para configurar os serviços correspondentes.
Depois de criar os arquivos .env e docker-compose.yml, você pode gerar os contêineres Docker seguindo estes passos:
docker-compose.yml e .env estejam na raiz do seu projeto WordPress.docker-compose up -d para construir e iniciar os contêineres.
docker-compose up -d
Isso iniciará os serviços do WordPress e do banco de dados definidos no arquivo docker-compose.yml.
Verifique os Contêineres: Utilize docker-compose ps para verificar se os contêineres estão em execução.
docker-compose ps
Isso exibirá o status dos contêineres definidos no arquivo docker-compose.yml.
Com esses passos, o desenvolvedor deverá ter seus contêineres do WordPress e do banco de dados em execução de acordo com as configurações definidas nos arquivos .env e docker-compose.yml. Certifique-se de estar na raiz correta do projeto ao executar esses comandos no terminal.
Ao encerrar este estudo sobre a migração do Portal Diof para o ambiente Docker, evidenciamos a significativa evolução proporcionada por essa transição. A partir da implementação do Docker, percebe-se uma notável melhoria na flexibilidade, desempenho e gerenciamento do Portal Diof.
A capacidade de modularidade e isolamento fornecida pelo Docker viabiliza não apenas a portabilidade eficiente do website, mas também simplifica consideravelmente a manutenção e a escalabilidade do ambiente. A centralização de recursos e a padronização do ambiente de desenvolvimento, teste e produção emergem como diferenciais primordiais para a continuidade do crescimento e aprimoramento contínuo do Portal Diof.
Essa transição representa não apenas uma modernização da infraestrutura, mas também um marco para a evolução do website, permitindo acompanhar as demandas dinâmicas e as expectativas do público-alvo, consolidando assim a visão de excelência e inovação do Portal Diof.