Creando un servidor de aplicaciones con Dokku

En enjambre-bit elegimos utilizar y recomendar dokku, una plataforma para servir aplicaciones como servicio similar a heroku, pero algo más pequeña y libre:

¿Por qué?

Usamos dokku porque buscamos tener una forma sencilla de poner aplicaciones al alcance de nuestros clientes, nos gusta mostrar día a día el avance de los proyectos y hacerlos partícipe del proceso de desarrollo.

Dokku nos permite precisamente eso, dar de alta aplicaciones en nuestro servidor de forma muy sencilla. Con un solo comando, dokku genera un espacio en nuestro servidor para realizar el deploy de una aplicación, configura un subdominio para acceder a la aplicación y gestiona todo lo demás.

¿Cómo instalar dokku?

Hay varias formas, podrías instalar dokku en tu propio equipo usando las instrucciones del sitio web, o directamente usar alguna de las imágenes que provee el servidor de VPS digital ocean.

En nuestro caso, usamos esta opción, creamos la imagen de dokku que provee digital ocean en la sección "One-click Apps":

Una vez generada la máquina, configuramos la clave pública y un dominio para acceder al equipo. Así dokku va a poder generar los subdominios para cada aplicación fácilmente:

¡ y todo listo !

Demo 1: NodeJS

Para probar que el entorno funciona correctamente, vamos a realizar un deploy de aplicación sencilla realizada con node-js.

Primero clonamos el repositorio de prueba, después vinculamos la ruta a dokku y por último realizamos el deploy.

Este es un video que muestra el proceso completo:

Demo 2: Contenido estático

En el caso de emberjs, o incluso con otros sitios sencillos, necesitamos servir contenido estático directamente, sin usar ninguna tecnología adicional.

Para esos casos usamos las instrucciones que Florian Heinemann detalló en su sitio web:

Primero necesitamos crear un archivo que especifique el buildpack a utilizar y luego dos archivos: .static e index.html:

echo "export BUILDPACK_URL=https://github.com/florianheinemann/buildpack-nginx.git" > .env  
touch .static  
echo "hola mundo" > index.html  

Luego hacemos al menos un commit, y agregamos en vínculo con dokku:

git add .  
git commit -m "commit inicial."  
git remote add dokku dokku@dev-enjambrebit.com.ar:estatico  

Y por último, el deploy:

git push dokku master  

Ten en cuenta que esto demora un poco al principio, pero una vez que se realiza los siguientes deploy serán rapidísimos.

Una vez que finaliza deberías ver en pantalla la URL del sitio generado:

[...]
=====> Application deployed:
       http://estatico.dev-enjambrebit.com.ar

Con eso deberías ver el contenido del archivo index.html directamente en el navegador.

Los archivos .env y .static no se van a publicar, pero el resto de los archivos o carpetas que coloques ahí si.

Administrando dokku

Dokku se puede administrar directamente ingresando por ssh al equipo, y el commando "dokku". Aunque hay una forma mucho más práctica que consiste en instalar alguno de los clientes que se ofrecen en la documentación.

Lo interesante de tener un cliente es que desde cualquier equipo (autorizado) podrías listar aplicaciones, detenerlas, consultar logs, instalar bases de datos y mucho más!

Conclusión

Dokku es una de esas herramientas que cambian tu forma de trabajar, hace unos años era común tener que ingresar a tu servidor usando ssh, configurar a mano varios archivos y dedicar varios minutos para tener una aplicación online; ¡sin mencionar cuando usábamos FTP!

Pero a medida que trabajamos haciendo aplicaciones es importante decidir qué tipo de tareas son cruciales para nuestro negocio y cuales no.

En enjambre-bit, administrar servidores artesanalmente no es lo nuestro. Nuestro corazón está en desarrollar aplicaciones, conversar con nuestros clientes y resolver sus necesidades de forma eficiente, tener la disciplina de mostrar progresivamente el avance de los proyectos y automatizar procesos.

Y por fortuna, dokku es una de esas herramientas que nos ponen en marcha :)