PostgreSQL y MySQL

Por: Artiko
dokploypostgresqlmysqlbases-de-datos

PostgreSQL y MySQL

Dokploy gestiona bases de datos como servicios independientes dentro de Docker. Cada base de datos corre en su propio contenedor con volumen persistente, credenciales aisladas y acceso desde la red interna.

Crear una base de datos PostgreSQL

Desde el panel principal:

  1. Clic en Create Service
  2. Seleccionar Database
  3. Elegir PostgreSQL
  4. Asignar un nombre descriptivo (ejemplo: api-postgres)

Dokploy crea el contenedor con la imagen oficial de PostgreSQL y genera credenciales automaticamente.

Configuracion inicial

Al crear la base de datos, el panel muestra la seccion General con estos campos:

CampoDescripcion
Database NameNombre de la base de datos interna
Database UserUsuario con permisos sobre la base
Database PasswordContrasena generada automaticamente
Docker ImageImagen y version (default: postgres:16)

Para cambiar la version de PostgreSQL, edita el campo Docker Image:

postgres:15
postgres:16-alpine
postgres:17

Despues de modificar cualquier campo, presiona Save y luego Redeploy para aplicar los cambios.

Variables de conexion

Dokploy genera automaticamente las variables de conexion en la pestana Environment. Las variables clave son:

DATABASE_URL=postgresql://usuario:contrasena@nombre-contenedor:5432/nombre_db
POSTGRES_USER=usuario
POSTGRES_PASSWORD=contrasena
POSTGRES_DB=nombre_db

La variable DATABASE_URL usa el nombre del contenedor como host, lo que permite la conexion directa desde cualquier aplicacion dentro de la misma red Docker.

Crear una base de datos MySQL

El proceso es identico:

  1. Create Service > Database > MySQL
  2. Asignar nombre (ejemplo: wordpress-mysql)

Configuracion de MySQL

Los campos disponibles son similares:

CampoDescripcion
Database NameNombre de la base
Database UserUsuario principal
Database PasswordContrasena
Database Root PasswordContrasena del usuario root
Docker ImageDefault: mysql:8

MySQL tiene un campo adicional: Root Password. Este usuario tiene privilegios totales sobre el servidor. Usalo solo para tareas administrativas.

Versiones disponibles:

mysql:8.0
mysql:8.4
mysql:9

Acceder via terminal integrada

Dokploy incluye una terminal web para acceder directamente al contenedor de la base de datos.

Terminal de PostgreSQL

  1. Selecciona la base de datos en el panel
  2. Ve a la pestana Terminal
  3. Ejecuta:
psql -U $POSTGRES_USER -d $POSTGRES_DB

Comandos utiles dentro de psql:

-- Listar bases de datos
\l

-- Listar tablas
\dt

-- Describir una tabla
\d nombre_tabla

-- Ver tamano de la base de datos
SELECT pg_size_pretty(pg_database_size(current_database()));

-- Salir
\q

Terminal de MySQL

mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE

Comandos utiles dentro de mysql:

-- Listar bases de datos
SHOW DATABASES;

-- Listar tablas
SHOW TABLES;

-- Describir una tabla
DESCRIBE nombre_tabla;

-- Ver tamano de todas las bases
SELECT table_schema, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema;

Conectar una aplicacion a la base de datos

La conexion entre una aplicacion y una base de datos en Dokploy se hace a traves de la red interna de Docker. No necesitas exponer puertos al exterior.

Paso 1: Obtener el nombre del contenedor

En la seccion General de la base de datos, el campo App Name o el nombre del servicio es el hostname interno. Dokploy asigna un nombre con formato:

nombre-servicio-hash

Puedes verlo en la pestana Terminal ejecutando:

hostname

Paso 2: Configurar variables de entorno en la aplicacion

Ve a tu aplicacion en Dokploy, pestana Environment, y agrega las variables de conexion:

DATABASE_HOST=nombre-contenedor-db
DATABASE_PORT=5432
DATABASE_USER=usuario
DATABASE_PASSWORD=contrasena
DATABASE_NAME=nombre_db

Para frameworks que usan una URL de conexion unica:

# PostgreSQL
DATABASE_URL=postgresql://usuario:contrasena@nombre-contenedor-db:5432/nombre_db

# MySQL
DATABASE_URL=mysql://usuario:contrasena@nombre-contenedor-db:3306/nombre_db

Paso 3: Redesplegar la aplicacion

Despues de agregar las variables, presiona Redeploy en la aplicacion. Las variables se inyectan en el contenedor al iniciar.

Ejemplo practico: Node.js con PostgreSQL

Si tu aplicacion usa pg o Prisma:

# En la pestana Environment de la aplicacion
DATABASE_URL=postgresql://api_user:secretpass@api-postgres-abc123:5432/api_db

El codigo no necesita cambios. Prisma, TypeORM, Drizzle y la mayoria de ORMs leen DATABASE_URL automaticamente.

Monitorear recursos de la base de datos

Dokploy muestra metricas basicas de cada servicio de base de datos.

Pestana Monitoring

Accede a la base de datos y selecciona Monitoring. Las metricas disponibles son:

Verificar estado desde terminal

Para PostgreSQL:

-- Conexiones activas
SELECT count(*) FROM pg_stat_activity;

-- Tamano de tablas
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

Para MySQL:

-- Estado del servidor
SHOW STATUS;

-- Conexiones activas
SHOW PROCESSLIST;

-- Variables de rendimiento
SHOW VARIABLES LIKE 'max_connections';

Limitar recursos

En la pestana Advanced de la base de datos puedes configurar limites de Docker:

ParametroEjemploDescripcion
Memory Limit512mRAM maxima del contenedor
Memory Reservation256mRAM minima garantizada
CPU Limit1.0Nucleos de CPU maximos

Estos limites previenen que una base de datos consuma todos los recursos del servidor.


Siguiente: Capitulo 11: MongoDB, Redis y MariaDB —>