使用数据库¶
场景:应用需要连接 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(示例):
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。