Ir para conteúdo principal
Lucas Caton

Vídeo: Heroku Open-Source? Conheça o Dokku

Aprenda a configurá-lo passo-a-passo

Lucas Caton

Lucas Caton

@lucascaton

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
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

# Ver todos os domínios
dokku domains:report

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 bookaton

# [Não mostrei isso no vídeo]
# Criar um cronjob para renovar o certificado a cada 2 meses
dokku letsencrypt:auto-renew bookaton
dokku letsencrypt:cron-job --add bookaton
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: