使用数据库¶
场景:应用需要连接 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 示例: ```yaml services: my-app: # ... networks: - dokploy-network
networks: dokploy-network: external: true ```
接入步骤¶
1. 获取凭据¶
前提:已登录 Vault(如需)
bash
export VAULT_ADDR=https://vault.${INTERNAL_DOMAIN}
vault login ${VAULT_TOKEN}
如无 VAULT_TOKEN,请联系运维获取。
由运维创建数据库用户并写入 Vault(示例):
bash
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 环境变量¶
```bash
Replace <...> placeholders with your values.¶
PG_HOST=platform-postgres${ENV_SUFFIX}
PG_PORT=5432
PG_DB=
REDIS_HOST=platform-redis${ENV_SUFFIX}
REDIS_PORT=6379
REDIS_PASSWORD=
3. 在应用中使用¶
Node.js (pg): ```javascript 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): ```javascript 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。