Este repositório contém exemplos práticos de diferentes estratégias de deploy usando Docker e Docker Compose. Cada exemplo está configurado em um diretório separado e pode ser executado individualmente. Para evitar problemas de conflito entre containers e serviços, destrua sempre o ambiente atual antes de iniciar um novo.
- Docker
- Docker Compose
Cada projeto está em uma pasta individual com seu próprio docker-compose.yml
.
Veja abaixo o guia para executar cada projeto.
Descrição: Exemplo de Blue-Green Deploy, onde duas versões da aplicação (Blue e Green) são executadas simultaneamente, e o tráfego é redirecionado entre elas.
Como executar:
- Acesse o diretório
blue-green
. - Execute o comando:
docker-compose up -d --build
- Acesse a aplicação em
http://localhost:8080
.
Simulando deploy:
Ao acessar o http://localhost:8080
a aplicação exibirá a tela do da aplicação BLUE, ela quem está cofifgurada no NGINX
Acesse o arquivo: ./ngnix/nginx.conf e comenta a linha server blue-app:80;
e descomente a linha: server green-app:80;
Após feito isto rode o comando:
docker-compose up -d --force-recreate --no-deps nginx
que o servidor NGNIX será reiniciado e estará entregando agora no endereço: http://localhost:8080
a aplicação GREEN, e sem derrubar as aplicações.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Descrição: Exemplo de Canary Deploy, onde uma pequena porcentagem do tráfego é enviada para uma nova versão da aplicação.
Como executar:
- Acesse o diretório
canary
. - Execute o comando:
docker-compose up -d --build
- Acesse a aplicação em
http://localhost:8080
para verificar o comportamento do Canary.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Descrição: Exemplo de Rolling Update, onde as instâncias da aplicação são atualizadas uma de cada vez.
Como executar:
- Acesse o diretório
rolling-update
. - Inicie o ambiente inicial com o comando:
docker-compose up -d --build
- Realize o Rolling Update escalando as réplicas de
blue-app
egreen-app
gradualmente.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Descrição: Exemplo de A/B Testing Deploy, onde o tráfego é dividido entre duas versões da aplicação com base em cookies.
Como executar:
- Acesse o diretório
ab-testing
. - Execute o comando:
docker-compose up -d --build
- Acesse a aplicação em
http://localhost:8080
e observe o redirecionamento entre versões A e B.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Descrição: Exemplo de Shadow Deploy, onde o tráfego é enviado para a nova versão da aplicação sem impactar o cliente.
Como executar:
- Acesse o diretório
shadow
. - Execute o comando:
docker-compose up -d --build
- Acesse a aplicação em
http://localhost:8080
.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Descrição: Exemplo de Feature Toggle, onde uma funcionalidade específica pode ser ativada ou desativada usando uma variável de ambiente.
Como executar:
- Acesse o diretório
feature-toggle
. - Execute o comando:
docker-compose up -d --build
- Acesse a aplicação em
http://localhost:8080
.
Destruir o ambiente:
Para parar e remover o ambiente, execute:
docker-compose down
Antes de iniciar qualquer outro projeto, sempre destrua o ambiente atual usando docker-compose down
para evitar conflitos entre os containers.
Cada projeto possui configurações individuais, e rodá-los simultaneamente pode causar problemas de rede e portas ocupadas.
Para dúvidas ou sugestões, entre em contato.