Todo sobre Apple, Android, Juegos Apks y Sitios de Peliculas

Cómo alojar su propia plataforma como servicio (PaaS) con Dokku

Dokku es una implementación de plataforma como servicio (PaaS), que puedes autohospedar en tu propio hardware. Dokku utiliza Docker para implementar automáticamente su código cuando presiona desde su terminal.

Configurar un servidor Dokku le permite implementar rápidamente nuevas aplicaciones utilizando el flujo de trabajo familiar de Git. Los costos de alojamiento pueden ser mucho más bajos que los de las soluciones comerciales PaaS y las ofertas administradas de Kubernetes. Una vez que su servidor Dokku esté en funcionamiento, iniciar una nueva aplicación sólo debería llevar unos momentos.

Empezando

Dokku admite varios métodos de instalación. Al instalar sobre hardware de metal desnudo, utilice el script de arranque oficial para descargar la última versión.

wget https://raw.githubusercontent.com/dokku/dokku/v0.24.7/bootstrap.sh

sudo DOKKU_TAG=v0.24.7 bash bootstrap.sh

El script de arranque transformará una nueva instalación de Linux en un servidor Dokku en funcionamiento. Las dependencias de software, incluido Docker, se descargarán e instalarán automáticamente. El proceso puede tardar hasta 10 minutos, dependiendo de su conexión a Internet.

Puedes ejecutar Dokku como contenedor Docker. Esto es ideal cuando utilizas un entorno donde Docker ya está disponible.

docker run 

--env DOKKU_HOSTNAME=example.com

--name doku

-p 3022:22

-p 8080:80

-p 8443:443

-v /var/lib/dokku:/mnt/dokku

-v /var/run/docker.sock:/var/run/docker.sock

dokku/dokku:0.24.7

Reemplace example.com con el nombre de host que usará para acceder a su servidor. Usando este ejemplo, los puertos 80 y 443 estarán vinculados a los puertos 8080 y 8443 de su host, respectivamente. El puerto 3022 de su host se asignará al puerto 22 dentro del contenedor. Este puerto se utiliza para conexiones Git+SSH.

Se crea un volumen en /mnt/dokku. Los datos de la aplicación Dokku se almacenarán aquí. El socket Docker del host también está montado en el contenedor para que Dokku pueda interactuar con el demonio Docker para crear nuevos contenedores.

Configurando Dokku

Una vez completada la instalación, visite la dirección IP de su host en su navegador. Si le asignaste a Dokku un nombre de host, también puedes usarlo aquí. Aparecerá el instalador web para guiarlo a través del resto de la configuración.

Copie y pegue una clave SSH en el campo “Clave pública”. Dokku aceptará cualquier conexión SSH realizada con esta clave. Puede agregar otras claves más adelante utilizando la CLI de Dokku.

También necesita configurar el nombre de host de su instalación de Dokku si no se ha configurado. Si tiene un dominio asignado a su máquina, ingréselo aquí. De lo contrario, puede utilizar localhost o una dirección IP.

Cuando se ha configurado un nombre de host, Dokku puede servir automáticamente sus aplicaciones utilizando subdominios individuales. Si no tiene un dominio disponible, desmarque la casilla de verificación “Usar nombres de host virtual”. En su lugar, Dokku servirá cada una de sus aplicaciones en un puerto dedicado.

Si instaló Dokku con Docker, la configuración web no es compatible. Puede agregar un nombre de host al crear el contenedor configurando la variable de entorno DOKKU_HOSTNAME. Para agregar claves SSH, deberá conectarse al contenedor y usar la CLI de Dokku:

docker exec -it dokku dokku ssh-keys add my-key < /path/to/key

Una vez que haya configurado un nombre de host y haya agregado una clave SSH, Dokku debería estar listo para usar. No es posible realizar más tareas de administración mediante la interfaz de usuario web. Interactúas con Dokku a través de comandos de Git y el CLI.

Implementación de aplicaciones

¡Ahora estás listo para iniciar tu primera aplicación! Las implementaciones de Dokku comienzan con un git push. Dokku utiliza paquetes de compilación (ya sea Cloud Native o Herokuish) para detectar el lenguaje de programación de su aplicación y crear automáticamente una compilación.

Dokku también admite la ejecución de Docker Build directamente si su proyecto contiene un Dockerfile. Esta funcionalidad solo se puede utilizar cuando los constructores basados ​​en el paquete de compilación no están disponibles para su proyecto. Puede obtener más información sobre las compilaciones directas de Docker en el documentación dokku.

El uso de paquetes de compilación significa que Dokku impone pocas restricciones sobre cómo se crea su proyecto. Si está utilizando un lenguaje y un marco populares, debería poder utilizar git push para crear su implementación. Aquí hay un ejemplo de una aplicación React básica:

mkdir my-app

cd my-app

npx create-react-app .

git remote add dokku [email protected]:my-app

git push dokku master

Las dos últimas líneas son las más importantes. Su servidor Dokku se agrega como un control remoto Git para que pueda enviarle código. Reemplace example.com con la IP o el nombre de host de su instalación. La parte después de los dos puntos indica el proyecto Dokku al que enviar. No es necesario crearlo manualmente.

Una vez que se haya configurado el control remoto, estará listo para enviarle el código. El comando de ejemplo lleva la rama maestra a Dokku. Dokku tomará su proyecto, detectará automáticamente un paquete de compilación apropiado, creará una imagen de Docker e implementará su aplicación.

Adjuntar dominios de aplicaciones

Dokku implementa su aplicación en un subdominio de su nombre de host. Puede adjuntar un dominio personalizado utilizando la CLI de Dokku. Primero asegúrese de haber configurado los registros DNS adecuados.

dokku domains:add my-app example.com

Visitar example.com ahora servirá para la implementación de mi aplicación.

Agregar SSL

Dokku facilita la habilitación de SSL para sus aplicaciones. Puede agregar un complemento que integre Dokku con Let’s Encrypt. Una vez instalado el complemento, podrá adquirir certificados SSL con un solo comando.

Primero, instale el complemento:

dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git

A continuación, configure el complemento Let’s Encrypt con su dirección de correo electrónico. Let’s Encrypt utilizará esta dirección para enviarle alertas relacionadas con sus certificados.

dokku config:set --global no-restart [email protected]

Debe agregar el trabajo cron Let’s Encrypt para asegurarse de que Dokku pueda renovar sus certificados automáticamente:

dokku letsencrypt:cron-job --add

Finalmente, habilite Let’s Encrypt para su aplicación:

dokku letsencrypt my-app

El complemento Let’s Encrypt adquirirá un certificado para cubrir los dominios conectados a su aplicación. El certificado se renovará automáticamente antes de que caduque.

Actualizando tu aplicación

Dokku se basa en el flujo de trabajo de Git. Puede actualizar su aplicación realizando cambios en la base del código, creando confirmaciones de Git y luego enviando su rama a Dokku.

Cuando Dokku recibe un nuevo impulso, utiliza sus paquetes de compilación para construir un contenedor Docker actualizado. El contenedor actualmente en ejecución será reemplazado por uno nuevo una vez que se complete la compilación. Las actualizaciones son sin tiempo de inactividad y totalmente automatizado.

La duración del proceso de compilación variará según el tamaño de su aplicación y las tecnologías que utiliza. Dokku espera 10 segundos más después de que se completa la compilación antes de que el tráfico se dirija a nuevos contenedores. Esto le da a los scripts de arranque la oportunidad de completarse.

Dokku se puede integrar fácilmente en sistemas de integración continua (CI). La etapa final en una canalización de CI podría ser un git push dokku para actualizar su implementación en vivo.

Gestión de sucursales

Dokku normalmente implementa los cambios realizados en la rama maestra. Puede optar por utilizar una rama diferente mediante una configuración global o por aplicación:

dokku git:set --global deploy-branch dokku-deploy

dokku git:set my-app deploy-branch production

Con esta configuración, Dokku se implementará de forma predeterminada desde la rama dokku-deploy. En su lugar, las implementaciones de la aplicación my-app se realizarán desde producción.

Dokku es mucho más que la implementación básica en la que nos hemos centrado aquí. La distribución predeterminada se simplifica intencionalmente. Oficial y comunitario Los complementos pueden ser Se utiliza para proporcionar servicios, como bases de datos y autenticación. Esto le permite utilizar Dokku para backends con estado, así como para sus frontends estáticos.

La configuración de un servicio suele ser un proceso de dos pasos. Crea una instancia del servicio y luego la vincula a sus aplicaciones. Se pueden conectar varias aplicaciones a cada instancia de servicio.

Así es como puedes agregar una base de datos MySQL a una aplicación:

dokku plugin:install https://github.com/dokku/dokku-mysql.git

dokku mysql:create demo-db

dokku mysql:link demo-db my-app

Dokku establecerá la variable de entorno DATABASE_URL dentro del contenedor de su aplicación. Puede acceder a esta variable para recuperar la cadena de conexión MySQL. El uso de complementos de Dokku para bases de datos elimina la necesidad de administrar otro servidor de bases de datos externo.

Conclusión

Docker es una solución PaaS que le permite alojar su propia plataforma de aplicaciones. Una vez que Dokku esté en funcionamiento, iniciar una nueva aplicación es tan simple como git push.

Dokku se compara favorablemente con servicios como Heroku, Amazon Elastic Beanstalk y Google Firebase. Admite una gran cantidad de tecnologías de desarrollo y significa que no está vinculado a un proveedor de nube en particular. Puede ejecutar Dokku en una máquina virtual económica basada en la nube o conservarlo en su propio hardware físico.