Sempre busquei alternativas para deploy simples como o heroku. Vou mostrar neste passo-a-passo uma forma simples e rápida utilizando o Dokku.
Dokku é a menor implementação PaaS que você já viu. De uma forma simples e rápida consegue-se configurar um servidor para deploy. Se existe alguma dúvida sobre PaaS, SaaS, etc., uma pesquisa rápida no google vai retornar várias referências.
Nesse exemplo vou utilizar uma vps básica na DigitalOcean. Uma máquina 512 MB / 20 Gb/ 1 CPU, rodando Ubuntu Server 16.04.1. É possível criar uma máquina já com Dokku instalado e pré-configurado mas vou fazer com uma máquina ‘limpa’ para servir de base para outras vps.
Instalando
Com o servidor em execução vamos acessar via ssh pelo terminal. No caso de utilizar OS Windows, utilize o putty para acessar o servidor.
No primeiro acesso confirme com yes o questionamento sobre a autenticidade. No caso da DigitalOcean vai ser solicitado a mudança de senha nesse primeiro acesso.
Seguindo a documentação do Dokku vamos realizar a instação. Este processo demora +- uns 10 minutos.
sudo DOKKU_TAG=v0.7.2 bash bootstrap.sh
Finalizado o script de instação vamos adicionar a chave publica de nosso usuário de desenvolvimento para conseguir fazer o deploy no servidor recem criado.
Chaves
Na nossa máquina de desenvolvimento, vamos checar se nosso usuário tem uma chave pública:
Por padrão os arquivos das chaves públicas podem ser:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
No meu caso eu tenho o id_rsa.pub, então vou ler o conteúdo, seleciona-lo e copiar:
Para gerar a chave: (caso não exista nenhum arquivo .pub na pasta ~/.ssh)
Aceite as três opções pedidas por default. (não inserir password)
Para OS Windows achei este artigo. ssh Windows (não testei)
Inserindo a chave pública no servidor
Com nossa chave pública copiada (ctrl+c) vamos abrir o browser e digitar o ip do nosso servidor. Vai aparecer uma tela como a da imagem a seguir:
No campo Public Key, colamos nossa chave (Ctrl+V) e depois é so clicar em Finish Setup. Feito isto você vai ser redirecionado para página da documentação do Dokku.
Criando nossa APP
No terminal, conectado no nosso servidor:
No meu caso:
Para listar as apps existentes:
Quando você cria um novo aplicativo, por padrão o dokku nao fornece nenhum banco de dados como MySql ou PostgreSQL. É preciso instalar plugins. Dokku tem plugins oficiais para banco de dados. Neste passo-a-passo vou utilizar o PostgreSQL.
Instalando o plugin postgres e configurando o serviço de banco de dados
No terminal, conectado no nosso servidor:
Criando o serviço postgres:
No meu caso:
Vamos criar o link entre os serviços de banco de dados e nossa app.
No meu caso:
Configurando e executando nosso primeiro deploy.
Na nossa máquina cliente vamos configurar o git para fazer o primeiro deploy.
Vamos adicionar nosso repositorio remoto dokku da seguinte forma:
No meu caso:
No meu caso antes de fazer o deploy eu tenho que configurar algumas variáveis de ambiente como DEBUG e SECRET_KEY. Para esta configuração executo os comandos no servidor. Vou seguir a documentação existente em Environment Variables
dokku config:set fjfundo SECRET_KEY=’sua secret_key’
Para listar as variáveis de ambiente de nossa app:
Feito isto vamos ao nosso primeiro deploy: ( na nossa máquina cliente/dev)
Pronto! Agora é so acessar nossa aplicação. No final do deploy o dokku mostra a url de conexão. Caso precise obter a url use o comando no servidor:
Criando as tabelas do banco de dados
Nossa app está no ar mais ainda não tem as tabelas de nossa base de dados.
Troque fjfundo pelo nome da sua app.
Considerações finais
Ainda estou estudando e aprendendo a utilizar o dokku. Utilizo apenas em ambiente de desenvolvimento mas pretendo utilizar em produção.
Ainda tenho muito que aprender e fica aqui meu email, joseadolfojr@gmail.com, para quem tiver alguma dúvida e quizer também contribuir para meus estudos.
Este artigo foi importado automaticamente por fazer parte do Planetário Dev. Quer fazer parte deste HUB de conteúdos? Faça parte do Planetário e veja as vantagens.
Não tem site ou blog? Seja um autor do site e ainda pode ser remunerado.
Leia também: