文档生产部署

数据库、Cron 与 Timelines

理解新 Deno Deploy 的 PostgreSQL、Deno KV、Cron、环境上下文与 Timeline 隔离

新 Deno Deploy 的核心抽象是 app、revision、timeline 与 context。生产、Git 分支和 preview 可以运行不同 revision,并取得不同环境变量和逻辑数据库。

数据库

平台当前支持关联 PostgreSQL 或 Deno KV。每个 app 的生产、分支和 preview timeline 默认获得隔离的逻辑数据库。

const kv = await Deno.openKv();

Deno.serve(async () => {
  await kv.set(["health", "lastSeen"], new Date().toISOString());
  return Response.json({ ok: true });
});

PostgreSQL 连接会注入标准 DATABASE_URLPGHOSTPGPORTPGDATABASEPGUSERPGPASSWORD。迁移命令可以配置为 pre-deploy command,在 revision 接流量前运行。

Cron

Deno.cron("daily cleanup", "0 3 * * *", async () => {
  await runCleanup();
});

Cron 使用 UTC。Deploy 在发布时发现任务并处理调度,执行显示在 dashboard/logs/traces。失败默认不重试;需要重试时在任务上显式配置 backoffSchedule(最多 5 次,单次延迟上限 1 小时)。任务必须幂等;重试与下一次计划重叠时可能跳过后一个执行。

Context 与环境变量

  • Production:生产 timeline。
  • Development:分支与 preview timeline。
  • Build:只在构建阶段可见,不自动进入运行时。
  • Secret 创建后不再在 UI 显示;不要通过日志回显。

使用 DENO_TIMELINEDENO_DEPLOY_APP_ID 和 deployment 标识做日志维度,而不是把它们当访问控制。

官方依据:DatabasesCronTimelinesEnvironment contexts

输入关键词搜索全部文档。