跳转至

使用数据库

场景:应用需要连接 PostgreSQL 或 Redis 预计时间:20 分钟 前置条件:已完成部署第一个应用


概述

当前平台提供:

数据库 用途 访问方式
PostgreSQL 关系数据库 Vault 静态密码 + Dokploy Env
Redis 缓存/队列 Vault 静态密码 + Dokploy Env

ClickHouse / ArangoDB 尚未落地,后续再补。


连接信息

PostgreSQL

项目
Host platform-postgres${ENV_SUFFIX}
Port 5432
Vault 路径 secret/platform/<env>/postgres

Redis

项目
Host platform-redis${ENV_SUFFIX}
Port 6379
Vault 路径 secret/platform/<env>/redis

前提:你的应用需要加入 dokploy-network 才能访问上述服务。 ENV_SUFFIX 生产为空;staging 请在 Dokploy Environment 显式设为 -staging(避免容器冲突)。

Compose 示例

services:
  my-app:
    # ...
    networks:
      - dokploy-network

networks:
  dokploy-network:
    external: true


接入步骤

1. 获取凭据

前提:已登录 Vault(如需)

export VAULT_ADDR=https://vault.${INTERNAL_DOMAIN}
vault login ${VAULT_TOKEN}
如无 VAULT_TOKEN,请联系运维获取。

由运维创建数据库用户并写入 Vault(示例):

vault kv get -field=PG_USER secret/platform/<env>/<app>
vault kv get -field=PG_PASS secret/platform/<env>/<app>
vault kv get -field=password secret/platform/<env>/redis

2. 配置 Dokploy 环境变量

# Replace <...> placeholders with your values.
PG_HOST=platform-postgres${ENV_SUFFIX}
PG_PORT=5432
PG_DB=<app_db>
PG_USER=<from Vault>
PG_PASS=<from Vault>

REDIS_HOST=platform-redis${ENV_SUFFIX}
REDIS_PORT=6379
REDIS_PASSWORD=<from Vault>

3. 在应用中使用

Node.js (pg)

import { Pool } from 'pg';

const pool = new Pool({
  host: process.env.PG_HOST,
  port: Number(process.env.PG_PORT || 5432),
  user: process.env.PG_USER,
  password: process.env.PG_PASS,
});

Node.js (redis)

import { createClient } from 'redis';

const client = createClient({
  url: `redis://:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`,
});


常见问题

无法访问数据库?

  • 确认你的应用在 dokploy-network 上。
  • 确认 Vault 中的密码已更新到 Dokploy Env。