Usando o projeto https://github.com/dockersamples/example-voting-app, fazer as seguintes alterações:
Importante: criar uma branch para cada alteração abaixo
- No arquivo docker-compose.yml:
- Verificar quais imagens são usados como base, e fazer o build externo e salvando em um registry (aplicando boas práticas de tageamento)
- Retirar todos os builds e alterar para apontar para as imagens no registry usado
- Usar docker volumes para persistir os dados
- Configurar CI com os seguintes requisitos (usar Github Actions ou TravisCI):
- Commits/merge em qualquer branch: executar um lint do Dockerfile (validar o dockerfile)
- Merge na branch master/: gerar build das imagens do worker, vote e result (ver a melhor estratégia de tageamento)
- merge na branch master/: aplicar em um ambiente (pode ser GCP, AWS, Azure...) usando docker-compose: docker-compose up -d (não esquecer de baixar a última versão da imagem docker!)
- No arquivo docker-stack.yml:
- Apontar para as imagens personalizadas no registry
- Adicionar limites de recursos (cpu e memoria) nos services de result, vote e worker (pesquisar por "resources": https://docs.docker.com/compose/compose-file/)
- Para informações sensíveis, usar secrets ao invés de variáveis de ambiente
TODO
TODO
- O worker existe em duas langs: dotnetcore e java, por padrão é usado dotnetcore, fazer uma versão usando java