Etapas para configuração de uma aplicação em Rails na DigitalOcean usando o Dokku para deploy. A documentação completa está disponível em http://dokku.viewdocs.io/dokku/getting-started/installation
- DigitalOcean droplet Ubuntu 18.04
- Dokku 1-click installation
- Aplicação Rails no GitHub
Acesse o droplet como root
# local
$ ssh [email protected]
Crie o usuário e adicione ao grupo sudo
# droplet
$ adduser deploy
$ adduser deploy sudo
$ exit
Configure o acesso SSH via chave privada [opcional]
# local
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
# droplet
sudo dpkg-reconfigure tzdata
Acesse o IP do droplet no navegador para configurar o acesso do usuário dokku
- Public SSH Keys: chave pública da máquina local
- Hostname: IP ou domínio global da aplicação
# droplet
$ dokku apps:create <app-name>
$ dokku domains:set <app-name> <app-domain.com>
Por padrão o Dokku faz o deploy no branch master.
# local
git remote add dokku dokku@<droplet-ip>:<app-name>
git push dokku master
# para fazer o deploy a partir de outro branch
git push dokku <branch>:master
# droplet
# postgres
$ sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
$ dokku postgres:create <db-name>
$ dokku postgres:link <db-name> <app-name>
# mysql
$ sudo dokku plugin:install https://github.com/dokku/dokku-mysql.git
$ dokku mysql:create <db-name>
$ dokku mysql:create <db-name> <app-name>
# redis
$ sudo dokku plugin:install https://github.com/dokku/dokku-redis.git
$ dokku redis:create <app-name-redis>
$ dokku redis:link <app-name-redis> <app-name>
# let's encrypt
$ sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
$ dokku config:set --no-restart <app-name> DOKKU_LETSENCRYPT_EMAIL=<your-email>
$ dokku letsencrypt <app-name>
$ dokku letsencrypt:auto-renew <app-name>
$ dokku letsencrypt:cron-job --add <app-name>
Para habilitar o Sidekiq crie um arquivo Procfile na raiz do repositório e informe os processos ativos no servidor.
# Procfile
rake: bundle exec rake
console: bin/rails console
web: bin/rails server -p $PORT -e $RAILS_ENV
worker: bundle exec sidekiq -C config/sidekiq.yml
# droplet
$ dokku ps:scale <app-name> web=1 worker=1
Copie o DSN do banco de dados e configure a variável de ambiente
# droplet
$ dokku postgres:info <db-name>
$ dokku config:set --no-restart <app-name> DATABASE_URL=<db-dsn>
$ dokku config:set --no-restart <app-name> RAILS_ENV=<environment>
Atualize os dados de conexão no arquivo database.yml
<environment>:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
Com a alteração do arquivo atualizada no repositório, rode novamente o push para publicar a nova versão.
Após definir a conexão inicialize o banco de dados.
# droplet
$ dokku run <app-name> rails db:migrate
$ dokku run <app-name> rails db:seed
Para monitorar os logs da aplicação:
# droplet
$ dokku logs <app-name> -t