docs Bases de datos

Bases de datos

Bases de datos gestionadas con un clic, con credenciales cifradas, backups programados y restauración con un clic.

Motores compatibles

DeployKit ejecuta la imagen oficial de cada motor. La versión es fija para cada motor:

PostgreSQL 16

postgres:16-alpine, puerto 5432

MySQL 8

mysql:8, puerto 3306

MariaDB 11

mariadb:11, puerto 3306

MongoDB 7

mongo:7, puerto 27017, replica set opcional (rs0)

Redis 7

redis:7-alpine, puerto 6379

Crear una base de datos

Desde la página de tu proyecto, abre New Database, elige un nombre, un tipo y el servidor de destino. Para MongoDB puedes marcar Enable Replica Set. Crear una base de datos requiere el rol de Operator o Admin en el proyecto.

  • El contenedor se llama dk-<name> y sus datos viven en el volumen de Docker dk-<name>-data
  • El usuario es admin con una contraseña generada, almacenada cifrada (AES-256-GCM); la base de datos inicial recibe el nombre de la base de datos
  • Redis se crea sin contraseña — solo es accesible desde dentro de la red de Docker
  • Los replica sets de MongoDB reciben un keyfile y rs.initiate() automáticamente, por lo que las transacciones y los change streams funcionan
  • Cada base de datos tiene pestañas Connection, Backups, Monitoring, Logs y Tasks — las métricas, los logs persistentes y las reglas de alerta funcionan exactamente igual que en las aplicaciones

Conectar desde tus aplicaciones

Las bases de datos no se exponen a internet: no tienen dominio, ni ruta de Traefik, ni puerto publicado en el host. Viven en la red de Docker deploykit-network y se acceden mediante el hostname interno dk-<name> desde aplicaciones que se ejecutan en el mismo servidor. Copia la cadena de conexión de la pestaña Connection en una variable de entorno de tu aplicación:

bash
# PostgreSQL
postgresql://admin:<password>@dk-mydb:5432/mydb

# MySQL / MariaDB
mysql://admin:<password>@dk-mydb:3306/mydb

# MongoDB (replicaSet=rs0 is added when the replica set is enabled)
mongodb://admin:<password>@dk-mydb:27017/mydb?authSource=admin

# Redis
redis://dk-mydb:6379

Solo los Operators y Admins del proyecto pueden ver la cadena de conexión y la contraseña; los Viewers ven en su lugar un aviso de acceso restringido. No hay ninguna opción para publicar el puerto de una base de datos. Para trabajo puntual (un VACUUM, una consulta puntual) usa la pestaña Tasks de la base de datos: los comandos se ejecutan en la imagen cliente del motor con DK_DB_HOST, DK_DB_USER y la contraseña ya inyectados.

Backups programados

En la pestaña Backups , activa los backups automáticos, elige una programación (diaria a las 2:00 AM, cada 6 o 12 horas, semanal o mensual) y un periodo de retención, y después haz clic en Save Config. La programación surte efecto de inmediato, sin necesidad de reiniciar. Backup Now encola un backup manual en cualquier momento.

MotorMétodoArchivo
PostgreSQLpg_dump, comprimido con gzip.sql.gz
MySQL / MariaDBmysqldump, comprimido con gzip.sql.gz
MongoDBmongodump --archive --gzip.archive.gz
RedisBGSAVE, luego copia de dump.rdb.rdb
  • Los archivos se escriben en /var/backups/deploykit/<database-name>/ en el host (montado como bind mount en el contenedor de la API)
  • La retención se indica en días (1–365, por defecto 7): tras cada backup exitoso, se eliminan los archivos más antiguos que el periodo de retención
  • Las programaciones se ejecutan con el reloj del contenedor de la API, que por defecto es UTC
  • Cada backup dispara una notificación backup.completed o backup.failed, y los backups manuales y los cambios de configuración se registran en el log de auditoría

Restaurar un backup

La pestaña Backups lista cada archivo con su tamaño y antigüedad. Usa el botón de restaurar junto a un backup y confirma; eliminar borra el archivo de forma permanente. Restaurar y eliminar backups requiere el rol de Operator o Admin en el proyecto.

  • PostgreSQL y MySQL/MariaDB reproducen el volcado SQL sobre la base de datos existente — los objetos que ya existen pueden entrar en conflicto, así que ante la duda restaura sobre una base de datos vacía
  • MongoDB restaura con --drop, reemplazando las colecciones contenidas en el archivo
  • Los backups de Redis se listan y se conservan en disco, pero el dashboard no ofrece un botón de restauración para ellos

Detener y eliminar

Los Operators pueden detener e iniciar una base de datos. Eliminarla requiere el rol de Admin en el proyecto y borra el contenedor y su programación de backups; el volumen de datos dk-<name>-data y los archivos de backup en disco se conservan. Una base de datos importada desde un manifiesto de configuración todavía no tiene contenedor: el primer Start lo aprovisiona con la contraseña almacenada, por lo que las cadenas de conexión existentes siguen funcionando.

Nota: Los backups y las restauraciones se ejecutan a través del daemon de Docker del host de DeployKit, por lo que solo funcionan para bases de datos en el servidor local. Además, la contraseña queda integrada en el volumen en el primer arranque: si eliminas una base de datos y creas una nueva con el mismo nombre, se reutiliza el volumen antiguo con la contraseña antigua. Elimina el volumen con docker volume rm dk-<name>-data primero si quieres empezar desde cero.