Cloud Computing

28 out, 2015

A menor implementação PaaS que você já viu

Publicidade

“A menor implementação PaaS que você já viu”. Foi essa frase que me chamou a atenção quando eu passava alguns links rotineiros e e-mails “weekly” que recebo. E fiquei mais pasmo que tudo isso é feito só com 100 linhas de #!/bin/bash

Realmente, é a menor implementação que eu já vi. Algumas das informações abaixo foram retiradas do site oficial.

O que você não pode fazer com ele:

  • Multi-host. Não rola, mas você pode se interessar pelo Deis;
  • Multitenancy. Sim, ele faz isso, mas olhe novamente para o Deis;
  • Client app. Devido a certas circunstâncias, executar comandos remotos via SSH é bom.

A instalação é simples, e a Digital Ocean já prove uma imagem pronta para começar a usar. Testei com 4 tipos de aplicações, das mais comuns que lidamos no dia-a-dia como #DevOps que é: NodeJs, Ruby/Rails, Python e PHP, e obtive sucesso de deploy sem maiores problemas com essas aplicações. Utilizando apenas GIT + poucos comandos.

Vamos supor que já tenha seu Dokku rodando sem maiores problemas e já tenha o GIT instalado e configurado no seu computador.

Execute um clone do WordPress em uma pasta do seu computador, no meu caso, em ~/projects/dokku-testes:

git clone git@github.com:WordPress/WordPress.git blog
cd blog
git remote add deploy dokku@seuhost.com.br:blog #Adiciona um repositorio remoto e define o nome da aplicação como "blog"
git push deploy master #envia para o repositório remoto "deploy" a branch master

Após isso, veja o retorno do seu console e acesse seu wordpress, pronto para iniciar a instalação do mesmo: http://blog.seuhost.com.br

-----> Cleaning up ...
-----> Building blog ...
-----> Adding BUILD_ENV to build environment...
-----> PHP app detected
       
       !     WARNING: No composer.json found.
       Using index.php to declare PHP applications is considered legacy
       functionality and may lead to unexpected behavior.
       
-----> No runtime requirements in composer.json, defaulting to PHP 5.6.1.
-----> Installing system packages...
       - PHP 5.6.1
       - Apache 2.4.10
       - Nginx 1.6.0
-----> Installing PHP extensions...
       - zend-opcache (automatic; bundled, using 'ext-zend-opcache.ini')
-----> Installing dependencies...
       Composer version 1.0-dev (825b4b9c63a29c586d005de8dbbcfdfeb86bbf6f) 2015-01-20 16:39:06
       Loading composer repositories with package information
       Installing dependencies
       Nothing to install or update
       Generating optimized autoload files
-----> Preparing runtime environment...
       NOTICE: No Procfile, defaulting to 'web: vendor/bin/heroku-php-apache2'
-----> Discovering process types
       Procfile declares types -> web
       Default process types for PHP -> web
-----> Releasing blog ...
-----> Deploying blog ...
-----> Running pre-flight checks
       check-deploy: /home/dokku/blog/CHECKS not found. attempting to retrieve it from container ...
       CHECKS file not found in container. skipping checks.
-----> Running post-deploy
-----> Creating new /home/dokku/blog/VHOST...
-----> Configuring blog.seuhost.com.br...
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
       Reloading nginx
=====> Application deployed:
       http://blog.seuhost.com.br

To dokku@seuhost.com.br:blog
 * [new branch]      master -> master

Para soluções como cache, banco de dados (relacional e não relacional), Queuing, process managers, nginx e outras coisas mais, consulte os plugins já disponíveis.