Skip to content

Instantly share code, notes, and snippets.

@dnovais
Forked from aurelioluiz/dokku-digitalocean.md
Created August 27, 2019 01:57
Show Gist options
  • Save dnovais/8968e1e8b131ee647cb7b5e743fb8fdd to your computer and use it in GitHub Desktop.
Save dnovais/8968e1e8b131ee647cb7b5e743fb8fdd to your computer and use it in GitHub Desktop.
Aplicação Rails com Dokku na DigitalOcean

Aplicação Rails com Dokku na DigitalOcean

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

Requisitos

  • DigitalOcean droplet Ubuntu 18.04
  • Dokku 1-click installation
  • Aplicação Rails no GitHub

Criando usuário deploy

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]

Timezone

# droplet
sudo dpkg-reconfigure tzdata

Configurando o Dokku

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

Criando a aplicação

# droplet
$ dokku apps:create <app-name>
$ dokku domains:set <app-name> <app-domain.com>

Deploy

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 

Configurando serviços

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

Sidekiq

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

Rails

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.

Migrate e Seed

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

Logs

Para monitorar os logs da aplicação:

# droplet
$ dokku logs <app-name> -t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment