Dockploy la alternativa a Heroku, Vercel y Netlify para desplegar aplicaciones con Docker
· 10min · docker
Introducción
Dockploy es una plataforma de despliegue de aplicaciones que utiliza Docker para facilitar el proceso de despliegue y gestión de aplicaciones web. Es una alternativa a servicios como Heroku, Vercel y Netlify, pero con un enfoque en la simplicidad y la flexibilidad que ofrece Docker. Dockploy permite a los desarrolladores desplegar sus aplicaciones de manera rápida y sencilla, sin necesidad de preocuparse por la infraestructura subyacente. Con Dockploy, los desarrolladores pueden centrarse en escribir código y dejar que la plataforma se encargue del resto.
URL principal: https://dokploy.com
Arquitectura de Dockploy
Dockploy está construido sobre una arquitectura de microservicios que utiliza Docker para aislar y gestionar las aplicaciones. La plataforma consta de varios componentes clave:
- Docker: La plataforma de contenedores que se utiliza para empaquetar y ejecutar las aplicaciones.
- Traefik: Un proxy inverso que gestiona el enrutamiento del tráfico HTTP y HTTPS hacia las aplicaciones desplegadas.
- Postgresql: Una base de datos relacional que almacena la configuración y el estado de las aplicaciones desplegadas.
- Redis: Un almacén de datos en memoria que se utiliza para gestionar las sesiones y la caché.
- Dockploy API: La API RESTful que proporciona la funcionalidad principal de Dockploy, incluyendo la gestión de proyectos, servicios y usuarios.
- Dockploy Web: La interfaz web que permite a los usuarios interactuar con la plataforma y gestionar sus aplicaciones.
Características principales
Dockploy ofrece una serie de características que facilitan el despliegue y la gestión de despliegues:
- Despliegue sencillo: Permite desplegar aplicaciones con unos pocos clics, utilizando plantillas predefinidas o archivos Docker Compose personalizados.
- Gestión de proyectos: Permite organizar las aplicaciones en proyectos, facilitando la gestión y el seguimiento de múltiples aplicaciones.
- Soporte para bases de datos: Permite desplegar y gestionar bases de datos populares como PostgreSQL, MySQL, MariaDB, MongoDB y Redis.
- Certificados SSL automáticos: Utiliza Let’s Encrypt para proporcionar certificados SSL gratuitos y automáticos para las aplicaciones desplegadas.
- Escalabilidad: Permite escalar las aplicaciones fácilmente, ajustando los recursos asignados según las necesidades.
- Monitorización y logs: Proporciona herramientas integradas para monitorizar el rendimiento de las aplicaciones y acceder a los logs.
- Interfaz web intuitiva: Ofrece una interfaz web fácil de usar que permite a los desarrolladores gestionar sus aplicaciones sin necesidad de conocimientos avanzados en Docker.
- API RESTful: Proporciona una API que permite automatizar tareas y gestionar las aplicaciones programáticamente.
Requisitos previos
Dockploy está diseñado para funcionar en sistemas Linux, por lo que necesitarás una distribución compatible:
- Ubuntu 24.04 LTS
- Ubuntu 23.10
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS
- Debian 12
- Debian 11
- Debian 10 Fedora 40
- Centos 9
- Centos 8 Puedes revisar la documentación oficial para más detalles sobre los requisitos del sistema y la instalación.
Además será necesario disponer de recursos mínimos en el servidor donde se instale Dockploy, como:
- Al menos 2 GB de RAM
- Al menos 30 GB de espacio en disco
- Un procesador con al menos 2 núcleos
A mayores necesitarás disponer de más recursos a la hora de desplegar aplicaciones, dependiendo de los requisitos de cada aplicación.
Instalación de Dockploy
La instalación de Dockploy es sencilla y se puede realizar en pocos pasos. A continuación, se describen los pasos básicos para instalar Dockploy en tu servidor:
- Actualizar el sistema: Antes de instalar Dockploy, es recomendable actualizar el sistema para asegurarse de que todos los paquetes estén al día. Por ejemplo, en Debian o Ubuntu, puedes usar el siguiente comando como root:
apt update && sudo apt upgrade -y
- Instalar Docker: Dockploy utiliza Docker para gestionar las aplicaciones, por lo que es necesario tener Docker instalado en el servidor. Puedes seguir las instrucciones oficiales de Docker para instalarlo en tu sistema operativo. Sino el instalador de Dockploy también puede instalar Docker automáticamente si no está presente en el sistema.
- Instalar Dockploy: Una vez que Docker esté instalado, puedes proceder a instalar Dockploy. La forma más sencilla de hacerlo es utilizando el script de instalación proporcionado por Dockploy. Puedes descargar y ejecutar el script con los siguientes comandos:
curl -sSL https://dokploy.com/install.sh | sh
Al final de la instalación, el script te proporcionará una URL para acceder a la interfaz web de Dockploy.
Congratulations, Dokploy is installed!
Wait 15 seconds for the server to start
Please go to http://SERVER_IP:3000
Acceso a la interfaz web
Una vez que Dockploy esté instalado, puedes acceder a la interfaz web de Dockploy a través de tu navegador web. La URL de acceso dependerá de la configuración de tu servidor, pero generalmente será algo como http://mi-servidor-ip:3000
.
En esta pantalla inicial, deberás crear una cuenta de administrador para poder gestionar Dockploy.
Introduce:
- Un nombre de usuario
- Una dirección de correo electrónico
- Una contraseña segura
- Haz clic en “Register” para crear la cuenta de administrador.
A continuación, debería poder ver el interfaz de Dokploy.
Configuración inicial del dominio
Antes de comenzar a crear proyectos y servicios, es recomendable configurar un dominio para acceder a Dockploy. Esto facilitará el acceso a la plataforma y permitirá utilizar certificados SSL para asegurar las conexiones.
Para ello necesitaremos un dominio propio y configurarlo para que apunte a la dirección IP de nuestro servidor donde hemos instalado Dockploy. Mediante un registro A en la configuración DNS del dominio,
Después, para configurar el dominio dentro del Dokploy, ve a la sección “Settings” en el menú lateral y selecciona “Web Server”.
En el apartado “Server Domain”, puedes configurar el dominio que deseas utilizar para acceder a Dockploy.
En el campo “Domain”, introduce el nombre de dominio que deseas utilizar para acceder a Dockploy (por ejemplo, dockploy.midominio.com
).
En nuestro caso, meteremos dokploy.cursosdedesarrollo.com
.
Despues, en el campo “Let’s Encrypt Email”, introduce una dirección de correo electrónico válida que se utilizará para gestionar los certificados SSL con Let’s Encrypt.
A continuación, en el apartado “HTTPS”, activa el interruptor para habilitar el soporte HTTPS en Dockploy.
Además deberás elegir el “Certificate Provider”, con Let’s Encrypt es la opción recomendada.
Por último, haz clic en el botón “Save” para guardar la configuración.
Debería salir una notificación indicando que la configuración se ha guardado correctamente.
Después de guardar la configuración, Dockploy intentará obtener un certificado SSL para el dominio que has configurado utilizando Let’s Encrypt: https://dokploy.cursosdedesarrollo.com/
Proyectos
Una vez que hayas accedido a la interfaz web de Dockploy, puedes comenzar a crear y gestionar tus proyectos. Un proyecto en Dockploy representa una aplicación que deseas desplegar y gestionar. En el apartado “Projects”, puedes ver una lista de tus proyectos existentes y crear nuevos proyectos. Para crear un nuevo proyecto, haz clic en el botón “Create Project” y proporciona la siguiente información:
- Name: El nombre de tu proyecto.
- Description: Una breve descripción de tu proyecto (opcional). Pulsa en el botón “Create” para crear el proyecto.
Servicios
Dentro de cada proyecto, puedes crear y gestionar servicios. Un servicio en Dockploy representa una instancia de tu aplicación que se ejecuta en un contenedor Docker.
Para crear un nuevo servicio, haz clic en el botón “Create Service” dentro de tu proyecto.
Nos ofrece varias opciones para desplegar nuestra aplicación:
- Application: Despliega una aplicación.
- Database: Despliega una base de datos.
- Compose: Despliega una aplicación utilizando Docker Compose.
- Template: Despliega una aplicación utilizando una plantilla predefinida.
- AI Assistant: Despliega una aplicación utilizando un asistente de inteligencia artificial.
Databases
Dockploy también permite desplegar y gestionar bases de datos como servicios dentro de tus proyectos. Puedes elegir entre varias bases de datos populares, como PostgreSQL, MySQL, MariaDB, MongoDB y Redis.
Para crear un nuevo servicio de base de datos, selecciona la opción “Database” al crear un servicio.
Como vemos en la imagen, podemos elegir entre varias bases de datos populares. Selecciona la base de datos que deseas desplegar y proporciona la siguiente información:
- Database: El tipo de base de datos que deseas desplegar (por ejemplo, PostgreSQL, MySQL, etc.).
- Name: El nombre de tu servicio de base de datos.
- App Name: El nombre del servicio que se desplegará.
- Descripción: Una breve descripción de tu servicio (opcional).
- Database Name: El nombre de la base de datos que se creará.
- Database User: El nombre de usuario para acceder a la base de datos.
- Database Password: La contraseña para el usuario de la base de datos.
- Database Root Password: La contraseña para el usuario root de la base de datos (si aplica).
- Docker image: La imagen de Docker que se utilizará para desplegar la base de datos. Dokploy recomendará una imagen por defecto, pero puedes cambiarla si lo deseas.
Pulsa en el botón “Create” para crear el servicio de base de datos.
Debería ver el servicio de base de datos en la lista de servicios dentro de tu proyecto. Si entramos en el servicio, podemos ver información detallada sobre el servicio, incluyendo los logs, las variables de entorno y las opciones para reiniciar o eliminar el servicio.
Podemos ver las opciones principales del despliegue de la base de datos en el apartado “Deploy Settings” de la pestaña “General”:
- Deploy: Permite desplegar o redeplegar el servicio.
- Reload: Permite reiniciar el servicio.
- Start: Inicia el servicio si está detenido.
- Open Terminal: Abre una terminal dentro del contenedor del servicio.
Si pulsamos en el botón “Deploy”, nos saldrá una ventana modal para confirmar el despliegue del servicio.
Pulsamos en el botón “Confirm” para confirmar.
Deberíamos ver los logs del despliegue y si se despliega correctamente. Después del despliegue, podemos ver la información del servicio, incluyendo las variables de entorno, los logs, la monitorización, los backups y las configuraciones avanzadas en sus respectivas pestañas.
Acceso externo a la base de datos por consola
Para acceder a la base de datos desde fuera de Dockploy, necesitaremos desde la pestaña general, irnos al apartado “External Credentials” y cambiar el puerto por defecto (3306 en el caso de MySQL/MariaDB) por otro puerto que no esté en uso en el servidor. Pulsamos en el botón “Save” para guardar los cambios. Para acceder a la base de datos desde fuera de Dockploy, necesitaremos la siguiente información:
- Host: La dirección IP o el nombre de dominio del servidor donde está desplegado Dockploy.
- Port: El puerto que hemos configurado en el apartado “External Credentials”.
- Database Name: El nombre de la base de datos que hemos creado.
- Database User: El nombre de usuario para acceder a la base de datos.
- Database Password: La contraseña para el usuario de la base de datos. Con esta información, podemos utilizar cualquier cliente de base de datos compatible para conectarnos a la base de datos desde fuera de Dockploy con el comando de mariadb por ejemplo:
mariadb -h SERVER_IP -P PORT -u Database_User -p NOMBRE_DATABASE
Nos pedirá la contraseña y si todo es correcto, deberíamos poder acceder a la base de datos.
Acceso a la base de datos desde PHPMyAdmin
Si hemos desplegado una base de datos MySQL o MariaDB, podemos acceder a la base de datos desde PHPMyAdmin, que es una herramienta web para gestionar bases de datos MySQL/MariaDB. Para ello, necesitaremos desplegar un servicio de PHPMyAdmin dentro de nuestro proyecto en Dockploy. Al crear el servicio, seleccionamos la opción “Compose” y proporcionamos la siguiente información:
- Name: El nombre de tu servicio de PHPMyAdmin.
- App Name: El nombre del servicio que se desplegará.
- Descripción: Una breve descripción de tu servicio (opcional).
- Compose Type: Aquí seleccionamos “Docker compose” para proporcionar nuestro propio archivo docker-compose. Pulsamos en el botón “Create” para continuar. Nos metemos en el servicio recién creado y vamos a la pestaña “General”. En el apartado “Provider”, disponemos de varias opciones para desplegar el servicio en base a un origen:
- GitHhub: Permite desplegar el servicio desde un repositorio de GitHub.
- GitLab: Permite desplegar el servicio desde un repositorio de GitLab.
- Bitbucket: Permite desplegar el servicio desde un repositorio de Bitbucket.
- Gitea: Permite desplegar el servicio desde un repositorio de Gitea.
- Git: Permite desplegar el servicio desde un repositorio Git genérico.
- Raw: Permite desplegar el servicio proporcionando el contenido del archivo docker-compose directamente. Elegiremos la opción “Raw” y nos aparecerá un editor de texto donde podremos pegar el contenido del archivo docker-compose.
services:
phpmyadmin:
image: phpmyadmin:5.2.2
environment:
# Permite introducir manualmente el host/puerto del servidor en la UI
PMA_ARBITRARY: '1'
# Opcional: ajusta el tamaño de subida si lo necesitas
UPLOAD_LIMIT: 512M
Como vemos en el archivo docker-compose, estamos desplegando un servicio de PHPMyAdmin que se conectará a cualquier base de datos MySQL/MariaDB que le indiquemos manualmente. Indicamos dos variables de entorno:
- PMA_ARBITRARY: Permite introducir manualmente el host/puerto del servidor en la UI de PHPMyAdmin.
- UPLOAD_LIMIT: Ajusta el tamaño máximo de subida de archivos en PHPMyAdmin (opcional).
El puerto 80 es el que expone el contenedor por defecto para acceder a PHPMyAdmin.
Pulsamos en el botón “Save” para guardar los cambios.
Pulsamos en el botón “Deploy” para desplegar el servicio.
Configuración de dominio personalizado para PHPMyAdmin o cualquier otro servicio
Si queremos acceder a PHPMyAdmin o cualquier otro servicio desplegado En Dockploy mediante un dominio personalizado, podemos configurar un dominio o subdominio en la sección “Domains” del servicio que queramos configurar.
Para ello pulsaremos en el botón “Add Domain” y proporcionaremos la siguiente información:
- Service Name: El nombre del servicio al que queremos asociar el dominio (por ejemplo, el servicio de PHPMyAdmin).
- Host: El nombre de dominio o subdominio que deseas utilizar para acceder al servicio (por ejemplo,
phpmyadmin.midominio.com
). - Path: La ruta dentro del dominio donde se accederá al servicio (por ejemplo,
/
para acceder directamente al dominio). - Internal Path: La ruta interna del servicio dentro de Dockploy (por ejemplo,
/
para acceder directamente al servicio). - Container Port: El puerto interno del contenedor donde se ejecuta el servicio (por ejemplo,
80
para PHPMyAdmin). - HTTPS: Activa esta opción si deseas forzar el uso de HTTPS para acceder al servicio.
- Certificate Provider: Selecciona el proveedor de certificados que deseas utilizar para el dominio (por ejemplo, Let’s Encrypt). Pulsamos en el botón “Create” para guardar la configuración del dominio.
Deberíamos ver el dominio en la lista de dominios del servicio.
Ahora deberíamos validar el DNS pulsando en el botón “Validate DNS” para asegurarnos de que el dominio apunta correctamente a la dirección IP de nuestro servidor donde está desplegado Dockploy y que se generan los certificados SSL si hemos activado la opción HTTPS.
Una vez que el DNS esté validado, deberíamos poder acceder al servicio con el dominio personalizado que hemos configurado.
Es posible que tengamos que esperar unos minutos/horas para que los cambios de DNS se propaguen y los certificados SSL se generen correctamente.
De momento, genera un certificado autofirmado para el dominio, así que el navegador nos mostrará una advertencia de seguridad al acceder al dominio por primera vez.
Pero una vez hecho esto, ya podremos acceder a PHPMyAdmin o cualquier otro servicio desplegado en Dockploy mediante el dominio personalizado que hemos configurado: https://phpmyadmin.midominio.com/
Recuerda que cuando puedas acceder a PHPMyAdmin, deberás quitar el puerto 8080 del docker compose que creamos anteriormente para que podamos acceder a PHPMyAdmin sólo mediante el dominio personalizado y evitar posibles problemas de seguridad al usar https en vez del puerto 8080 sin cifrado por http.
Conclusión
Como vemos hemos visto cómo instalar y utilizar Dockploy para desplegar y gestionar aplicaciones y bases de datos utilizando Docker. Dockploy es una plataforma sencilla y flexible que facilita el proceso de despliegue y gestión de aplicaciones web, permitiendo a los desarrolladores centrarse en escribir código y dejar que la plataforma se encargue del resto. En concreto para desplegar bases de datos, hemos visto cómo crear un servicio de base de datos y cómo acceder a la base de datos desde fuera de Dockploy y desde PHPMyAdmin.