Vídeo: Heroku Open-Source? Conheça o Dokku
Aprenda a configurá-lo passo-a-passo
Lista de todos os comandos utilizados no vídeo:
bash
# Criar uma aplicação no Dokku
dokku apps:create bookaton
# Criar e "linkar" um banco de dados PostgreSQL
dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
dokku postgres:create bookaton_production # NOTA: você pode ignorar o sufixo `_production` se quiser
dokku postgres:link bookaton_production bookaton
dokku postgres:list
# Criar e "linkar" uma instância do Redis (Não rodei esses comandos no vídeo)
# dokku plugin:install https://github.com/dokku/dokku-redis.git redis
# dokku redis:create bookaton_production
# dokku redis:link bookaton_production bookaton
# dokku redis:list
# Definiar variáveis de ambiente
# (você pode passar várias de uma vez)
dokku config:set bookaton RAILS_MASTER_KEY=123456789
# Listar variáveis de ambiente
dokku config bookaton
# Adicionar buildpacks
dokku buildpacks:add bookaton https://github.com/heroku/heroku-buildpack-ruby.git
dokku buildpacks:add bookaton https://github.com/heroku/heroku-buildpack-nodejs.git
# dokku buildpacks:add bookaton \
# https://github.com/heroku/heroku-buildpack-activestorage-preview.git
# Ver quais buildpacks foram adicionados
dokku buildpacks:list bookaton
# Associar nossa aplicação à um domínio
dokku domains:add bookaton bookaton.lucascaton.com.br
# Remover domínio que o Dokku adiciona por padrão
dokku domains:remove bookaton bookaton.dokku
# Ver todos os domínios
dokku domains:report bookaton
Na sua aplicação, não esqueça de criar os seguintes arquivos:
Procfile
bash
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -c 3
release: bin/rails db:migrate
DOKKU_SCALE
bash
web=1
worker=1
Aí basta configurar o repositório remoto do Git (rode esse comando uma única vez):
bash
git remote add dokku [email protected]:bookaton
E toda vez que você quiser fazer deploy, rode:
bash
git push dokku
No servidor, vamos instalar o Let's Encrypt e criar nosso certificado SSL:
bash
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
dokku config:set --no-restart bookaton [email protected]
dokku letsencrypt:enable bookaton
# [Não mostrei isso no vídeo]
# Criar um cronjob para renovar o certificado a cada 2 meses
dokku letsencrypt:cron-job --add
Para rodar o console do Rails e/ou do PostgreSQL no servidor:
bash
dokku run bookaton rails c
dokku run bookaton rails db
[Não mostrei isso no vídeo] Para acessar o container dentro do servidor:
bash
dokku run bookaton sh
Por fim, para visualizar/acompanhar os logs, basta rodar:
bash
dokku logs bookaton -t
Clientes do Dokku, para rodar os comandos diretamente da sua máquina em vez de ter que acessar o servidor: