Creando una nueva aplicación en Dokku

En este tutorial vamos a explicar como agregar una aplicación a una instancia de Dokku, un pequeño Platform-as-a-Service que permite correr tus aplicaciones en una maquina virtual.

Hay distintos tipos de aplicaciones para levantar en Dokku, algunas de ellas son: Python, NodeJs, MySQL/MariaDB y MongoDB

Como primer paso nos tenemos que conectar al servidor mediante ssh (si es que no se esta hosteando la aplicación en la máquina local)

ssh user@server.coop
sudo su
su dokku

Luego vamos a crear una nueva aplicación con Dokku, para ello ejecutamos el siguiente comando reemplazando NUEVO_PROYECTO por el nombre que se le quiere dar a la apliación

dokku apps:create NUEVO_PROYECTO

Apliación de Django (Python)

Cuando estas creando una aplicación Django, ésta no pueden tener «_» underscore en el nombre de host. De lo contrario te saldría el siguiente error:

The domain name provided is not valid according to RFC 1034/1035.
Request Method:    GET 

Si se tiene que ejectuar algo después de la instalación, hay que crear el script /bin/post_compile

Aplicación en Node.js

Cuando se esta creando una aplicación Node, es importante instalar todas las dependencias de desarrollo (dev) ya que muchas veces son necesarias para hacer los builds.
Para ello luego de crear la aplicación, vamos a agregar al proyecto la variable NPM_CONFIG_PRODUCTION en false con el siguiente comando:

dokku config:set NUEVO_PROYECTO NPM_CONFIG_PRODUCTION=false

Generalmente las aplicaciones trabajan con alguna base de datos. Para esto vamos a configurar una base de datos relacional como MySQL o MariaDB y otro ejemplo con una base de datos no relacional como MongoDB.

Crear Servicio de MySQL / MariaDB

Para crear un servicio de base de datos MySQL o MariaDB, ejecutamos el siguiente comando reemplazando NUEVO_SERVICIO por el nombre que va a llevar el servicio.
Luego tenemos que vincular el servicio a la aplicación ya creada, para ello ejecutamos el segundo comando reemplazando NUEVO_PROYECTO por la aplicación y NUEVO_SERVICIO por el nombre del servicio de la base de datos

dokku mariadb:create NUEVO_SERVICIO
dokku mariadb:link NUEVO_PROYECTO NUEVO_SERVICIO

Crear Servicio de MongoDB

Documentación

Para cerar un servicio de base de datos Mongo, primero debemos crear dicho servicio corriendo el siguiente comando y reemplazando donde dice NUEVO_SERVICIO por el nombre que le queremos dar al servicio.

dokuu mongo:create NUEVO_SERVICIO

Luego hay que vincular el nuevo servicio de la base de datos con su aplicación. Para ello ejecutamos el siguiente comando reemplazando donde dice NUEVO_SERVICIO por el nombre del servicio creado y NUEVO_PROYECTO por el nombre del la aplicación.

dokku mongo:link NUEVO_SERVICIO NUEVO_PROYECTO 

Si se desea importar un dump a una base de datos ya creada en Dokku, tendrías que ejecutar el siguiente comando, reemplazando donde dice NUEVO_SERVICIO por el nombre del servicio de la base de datos y donde dice FILE por el archivo .tar del dump que se desea importar.

dokku mongo:import NUEVO_SERVICIO < FILE.tar

Configuración de Variables de entorno

Para configurar varialbes de entorno lo primero que hay que hacer es declarar que se va a configurar una aplicación, para ello ejecutamos el siguiente comando, reemplazando donde dice NUEVO_PROYECTO por el nombre de la aplicación a la que se le desea configurar las variables.

dokku config NUEVO_PROYETCO

Si a la aplicación se le configuró un servicio de base de datos Mongo, la variable MONGO_URL ya debería estar setea automáticamente.

Si se desean configurar múltiples variables de entorno para db, col, uri, se deberían configurar de la siguiente manera, reemplazando donde dice NUEVO_PROYECTO por el nombre de la aplicación y donde dice xxxx por el valor de la variable a configurar.

dokku config:set NUEVO_PROYECTO MONGO_URI=xxxx

Deploy

Si lo que se desea deployar es el repositorio entero, se debería realizar de la siguiente manera, reemplazando NUEVO_PROYECTO por el nombre de la aplicación creada en Dokku y donde dice INSTANCIA_DOKKU por el nombre de la instancia de Dokku donde se esta trabajando.

git push dokku@INSTANCIA_DOKKU:NUEVO_PROYECTO +HEAD:refs/heads/master

Si esta dentro de un directorio lo que queres deployar:
Si lo que se desea deployar esta contenido en un directorio específico, se debería realizar de la siguiente manera, reemplazando NUEVO_PROYECTO por el nombre de la aplicación que se encuentra en Dokku, donde dice INSTANCIA_DOKKU por el nombre de la instancia de Dokku donde se esta trabajando y donde dice DIRECTORIO por la ubicación del directorio que debe ser pusheado.

git subtree push --prefix DIRECTORIO dokku@INSTANCIA_DOKKU:NUEVO_PROYECTO master

*Proximamente saldrá un post donde se explicará como agregar los certificados SSL a una aplicación en Dokku utilizando let’s encrypt*

Deja una respuesta