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 包括 openai、openai-compatible、anthropic、google、qwen、xai 和 meta。不同 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 回调地址也应使用同一公开域名。
升级容器
常见升级流程:
- 备份持久化数据和
.env。 - 拉取新镜像。
- 停止旧容器。
- 使用相同
.env和 volume 启动新容器。 - 登录后验证连接、SQL Console、AI 和 Saved Queries。
常见问题
为什么登录或邀请链接跳到错误域名?
检查 BETTER_AUTH_URL 是否与用户访问地址完全一致,包括协议、域名和端口。
为什么容器能启动但 AI 不可用?
检查 DORY_AI_PROVIDER、DORY_AI_MODEL、DORY_AI_API_KEY 和 DORY_AI_URL。Provider 和 URL 不匹配时,运行时会失败。
为什么 Docker 中无法访问本地 SQLite / DuckDB 文件?
Docker 只能访问容器内路径。请用 volume 挂载文件目录,并填写容器内绝对路径。
下一步
这篇文档有帮助吗?