Deploy

Docker 部署

Docker 是自托管 Dory 最直接的方式,适合本地评估、团队测试和浏览器访问场景。容器默认监听 3000 端口。

最小启动命令

docker run -d --name dory \
  -p 3000:3000 \
  -e DS_SECRET_KEY="$(openssl rand -base64 32 | tr -d '\n')" \
  -e BETTER_AUTH_SECRET="$(openssl rand -hex 32)" \
  -e BETTER_AUTH_URL="http://localhost:3000" \
  -e NEXT_PUBLIC_REQUIRE_EMAIL_VERIFICATION=false \
  -e DORY_INIT_USER_EMAIL=admin@getdory.dev \
  -e DORY_INIT_USER_PASSWORD=admin \
  dorylab/dory:latest

启动后访问 http://localhost:3000,使用初始化用户登录。

启用 AI 功能

如果需要 SQL 生成、AI Chat 和结果分析,请增加 AI 环境变量:

  -e DORY_AI_PROVIDER=openai \
  -e DORY_AI_MODEL=gpt-4o-mini \
  -e DORY_AI_API_KEY=your_api_key_here \
  -e DORY_AI_URL=https://api.openai.com/v1 \

支持的 provider 包括 openaiopenai-compatibleanthropicgoogleqwenxaimeta。不同 provider 对 DORY_AI_URL 的要求不同,详情见 AI Provider 配置

使用 .env 文件

生产或团队环境建议使用 .env 管理配置:

docker run -d --name dory \
  -p 3000:3000 \
  --env-file .env \
  dorylab/dory:latest

示例 .env

DS_SECRET_KEY=replace_with_base64_secret
BETTER_AUTH_SECRET=replace_with_hex_secret
BETTER_AUTH_URL=https://dory.example.com
TRUSTED_ORIGINS=https://dory.example.com
NEXT_PUBLIC_REQUIRE_EMAIL_VERIFICATION=false
DORY_INIT_USER_EMAIL=admin@example.com
DORY_INIT_USER_PASSWORD=change_me
DORY_AI_PROVIDER=openai
DORY_AI_MODEL=gpt-4o-mini
DORY_AI_API_KEY=replace_with_api_key
DORY_AI_URL=https://api.openai.com/v1

持久化数据

Dory 默认使用 PGlite 文件存储自己的应用数据。Docker 中默认数据路径位于 /app/data 下,生产环境应挂载持久化目录,避免容器重建后数据丢失。

使用 Docker named volume:

docker volume create dory-data

docker run -d --name dory \
  -p 3000:3000 \
  --env-file .env \
  -e DB_TYPE=pglite \
  -v dory-data:/app/data \
  dorylab/dory:latest

使用宿主机目录:

mkdir -p /srv/dory/data

docker run -d --name dory \
  -p 3000:3000 \
  --env-file .env \
  -e DB_TYPE=pglite \
  -v /srv/dory/data:/app/data \
  dorylab/dory:latest

如果要连接 SQLite 或 DuckDB 文件,也需要把文件所在目录挂载到容器中,并在 Dory 连接表单中填写容器内绝对路径。

使用 Postgres 存储应用数据

生产环境也可以用 Postgres 存储 Dory 自己的应用数据:

DB_TYPE=postgres
DATABASE_URL=postgres://dory:strong_password@postgres.example.com:5432/dory

然后使用同一个 .env 启动容器:

docker run -d --name dory \
  -p 3000:3000 \
  --env-file .env \
  dorylab/dory:latest

反向代理和 HTTPS

团队部署建议放在 Nginx、Caddy、Traefik 或公司统一网关之后,并启用 HTTPS。此时:

  • BETTER_AUTH_URL 必须等于用户访问 Dory 的公开地址。
  • TRUSTED_ORIGINS 应包含公开访问地址。
  • OAuth 回调地址也应使用同一公开域名。

升级容器

常见升级流程:

  1. 备份持久化数据和 .env
  2. 拉取新镜像。
  3. 停止旧容器。
  4. 使用相同 .env 和 volume 启动新容器。
  5. 登录后验证连接、SQL Console、AI 和 Saved Queries。

常见问题

为什么登录或邀请链接跳到错误域名?

检查 BETTER_AUTH_URL 是否与用户访问地址完全一致,包括协议、域名和端口。

为什么容器能启动但 AI 不可用?

检查 DORY_AI_PROVIDERDORY_AI_MODELDORY_AI_API_KEYDORY_AI_URL。Provider 和 URL 不匹配时,运行时会失败。

为什么 Docker 中无法访问本地 SQLite / DuckDB 文件?

Docker 只能访问容器内路径。请用 volume 挂载文件目录,并填写容器内绝对路径。

下一步

这篇文档有帮助吗?