Adeus Heroku. Bem vindo Dokku + DigitalOcean!
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/