The App
Esta é uma aplicação experimental na qual faz parte do meu portfólio, trata-se de um Open Source e está disponível no GitHub. Auto Deploy Docker.
The Solution and Problem
Ao lançar uma nova release no DockerHub, caso tenha alguma versão em produção, pode ser necessário fazer alguma ação manual para atualizar a implantação. A partir dessa necessidade, para evitar ação manual (stop container, update docker-compose.yml and run), decidi construir esta aplicação. Ela tem como objeto central realizar uma rotina de backend para implantar um novo container (dispensando docker-compose) ou reeimplantar/atualizar, caso você lance alguma release no DockerHUB, para tal é necessário fazer uso dos WebHooks oficiais que a plataforma disponibiliza.
The API
A API Rest dessa aplicação tem como objeto central gerenciar a autentição do frontend, tal como registrar usuário e realizar login, para isso, utilizei Typescript com Express.js e depedências jwt para gerir a questão do token, na API também há uma rota para receber a notificação do webhook DockerHUB na qual inicializa uma rotina de implantação atráves desse gatilho.
The Frontend
O Frontend do projeto foi construído com Vuejs (javascript). atualmente ele consiste em telas de autenticação (login / register), uma tela para listagem de quais projetos estão cadastrados (conjunto de containers inteligados), e dentro do projeto selecionado há uma listagem containers relacionados, permitindo editar variáveis de ambientes dos containers, configuração network e demais parametros permitidos, assim como criar novas implantações automaticas ou removê-las.
Features
Atualmente o projeto dispõe das seguintes configurações Docker
- Image Name
- Container Name
- Commands
- Volume Bindings
- Networks (for now only bridge)
- Work Dir.
- Environments variables
- Tty
- Exposed Ports
- Port Bindings
and more settings…
Comments
Esta aplição não tem como função ou objetivo solucionar problemas de grandes sistemas, se você possui uma VPS com containers e precisa de algo para fazer implantações automáticas,essa aplicação se propõe a resolver o problema, porém, numa pespectiva escalável os grandes servidores como Google, AWS, Azure, etc já oferecem soluções para tal.
Images
Essa é a tela de autenticação.
Os projetos são listados da seguinte maneira, é aprensetado o titulo do projeto e a Chave (usado para o webhook)
No ato de criar um novo projeto, será necessário definir o nome, a chave (necessário criar), além da informação se o acesso ao servidor docker será local ou via API (docker api), caso queria poderá adicionar um email para receber noficações das implatanções.
Caso clique no projeto, abrirá uma tela com detalhes contendo as configurações do projeto, assim como haverá um botão para ir adiante, para a tela dos containers (Container List), também há opções de implantar manualmente “no caso da primeira implantação”
Na tela Container List é possível ver todos os containers pertencentes aquele projeto, assim como a ordem de implantação (qual container vai inciar primeiro)
Ao clicar no botão de criar container, aparecerá o modal contendo todas as opções de criações, atualmente, o projeto não oferece todas as opções da tecnologia, então eu me limitei a oferecer as principais configurações que são listados no tópico Feature