Adeus Heroku. Bem vindo Dokku + DigitalOcean!

Dyorg Almeida
2 min readJun 10, 2016

--

Quando conheci Heroku a 3 anos atrás, foi incrível. Se você não conhece Heroku, em resumo é uma plataforma (PaaS) na qual você pode criar apps (dynos) em nuvem para hospedar sua aplicação, adicionar serviços via add-ons (postgresql, mysql, memcached, sendgrid, etc) tudo com apenas uma linha de comando. E o mais interessante é o deploy automático usando git push. Tudo ótimo, até que sua aplicação começa a crescer, e o custo do Heroku começa a crescer de forma assustadoramente desproporcional.

Custos mínimo para 1 aplicação feita para produção no Heroku:
Dyno: $25/mês
PostgreSQL: $50/mês
SSL Endpoint: $20/mês (Não está incluso o preço do certificado SSL)
_____________________________________
Total: $95/mês (quase R$ 400 atualmente)

Solução: Migrar para o Digital Ocean e instalar o Dokku. Com Dokku você tem seu próprio Heroku em um servidor em nuvem só seu. Sem ter que pagar a mais por cada dyno e seus add-ons. Um Heroku por $5.

Como se não fosse bom o suficiente, ainda em outro post eu explico como conseguir certificado SSL de graça utilizando apenas 3 linhas de comandos com o Dokku.

Criando sua conta Digital Ocean

Acesse https://digitalocean.com e crie uma conta. Ao usar este link você e eu ganhamos $10 em créditos, assim você poderá testar sem gastar nada de início pois existe planos a partir de $5 ao mês. Use meu link para ganhar $10 de créditos.

Agora crie seu Droplet, e na segunda aba em imagens, selecione a imagem “Dokku on Ubuntu”. Configure seu domínio e siga em frente.

Criando seu app no Dokku

Agora que você já criou seu droplet e configurou o Dokku, vá no seu terminal digite os seguintes comandos para criar sua primeira app.

ssh root@seudominio.comdokku apps:create app-testdokku config:set app-test BUILDPACK_URL=git://github.com/heroku/heroku-bui
ldpack-php.git

Resolvendo problemas de memória

Isso é realmente importante se você for usar um droplet de apenas $5. Dokku utiliza muita memória no processo de deploy, e apenas 512MB não vai dar conta, especialmente se você criar mais de uma app na mesma droplet. No seu terminal irá aparecer erros sem solução aparente, mas realizando o swap abaixo tudo irá correr muito bem.

cd /var
touch swap.img
chmod 600 swap.img

dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
mkswap /var/swap.img
swapon /var/swap.img
free

echo "/var/swap.img none swap sw 0 0" >> /etc/fstab

Criando banco de dados postgresql

Não vou me aprofundar em como instalar add-ons, na documentação do dokku tem tudo muito bem detalhado como instalar diversos serviços. Abaixo deixou somente um exemplo de como instalar o postgresql.

dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres dokku postgres:create database-test dokku postgres:link database-test app-test

Links que foram úteis:

https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-dokku-application

http://dokku.viewdocs.io/dokku/installation/

https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps

http://donpottinger.net/blog/2014/11/17/bye-bye-heroku-hello-dokku.html

http://donpottinger.net/blog/2014/11/22/bye-bye-heroku-hello-dokku-part-2.html

http://reallybusywizards.com/dokku-digitalocean-your-very-own-cheap-heroku-clone/

--

--

Dyorg Almeida

Startup entrepreneur. Full Stack Developer & Certified PHP Engineer. MBA in Project Management.