使用 PostgreSQL 新装 DIAN115
准备 PostgreSQL 数据库,在容器中填写数据库类型和连接串。首次启动自动建表;配置目录继续保存密钥、图片和其他本地文件。
请先取得包含 PostgreSQL 支持的对应镜像,并在 DIAN115_IMAGE 中填写完整镜像名。latest 指向仓库当前已发布镜像,不等于本教程的最低版本;旧版镜像不适用本节迁移命令。
1. 准备镜像、目录和数据库
使用包含 PostgreSQL 支持的 DIAN115 v5.0.42 或更新镜像。下面示例将 PostgreSQL 18 与 DIAN115 部署在同一台 Linux / NAS,数据库只映射到本机 15432 端口。已有 PostgreSQL 服务的用户直接使用现有库地址、库名、用户名和密码,跳到“填写连接串”。/mnt/user/media 与 /mnt/cache/CloudNAS 替换为自己的媒体和挂载目录。
mkdir -p config dian115AI postgres-data2. 保存 compose.yml
将以下内容保存为 compose.yml。DIAN115 使用 Host 网络;PostgreSQL 使用普通容器网络,通过宿主机 127.0.0.1:15432 连接。PostgreSQL 18 的持久化目录为 /var/lib/postgresql。已有数据库时仅保留 dian115 服务,保留原来的所有目录挂载。
services:
postgres:
image: postgres:18
container_name: dian115-postgres
restart: unless-stopped
environment:
POSTGRES_DB: dian115
POSTGRES_USER: dian115
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?请在 .env 填写数据库密码}
ports:
- "127.0.0.1:15432:5432"
volumes:
- ./postgres-data:/var/lib/postgresql
dian115:
image: ${DIAN115_IMAGE:?请填写支持 PostgreSQL 的镜像}
container_name: dian115
restart: unless-stopped
network_mode: host
environment:
PORT: "8095"
TZ: Asia/Shanghai
DIAN115_DB_DRIVER: pgsql
DIAN115_PG_DSN: ${DIAN115_PG_DSN:?请在 .env 填写数据库连接串}
volumes:
- ./config:/config
- ./dian115AI:/dian115AI
- /mnt/user/media:/媒体库
- /mnt/cache/CloudNAS:/CloudNAS:rslave
3. 填写 .env 连接配置
在 compose.yml 同目录新建 .env,替换密码。POSTGRES_PASSWORD 用于首次创建 PostgreSQL 账号;DIAN115_PG_DSN 用于应用连接。两处密码必须一致。DSN 中的用户名、密码若含 @、:、/、?、#、% 等特殊字符,应先做 URL 百分号编码。例子中的 sslmode=disable 用于同机连接;远程 TLS 数据库按服务提供方要求填写 sslmode。
# 两处密码必须相同。示例密码请自行替换;使用字母和数字可直接放入连接串。
POSTGRES_PASSWORD=ChangeThisPassword2026
DIAN115_PG_DSN=postgres://dian115:ChangeThisPassword2026@127.0.0.1:15432/dian115?sslmode=disable
# 已有指定镜像时,可填写完整镜像名;要求 v5.0.42 或更新且包含 PostgreSQL 支持。
DIAN115_IMAGE=madbrolab/dian115:5.0.42
4. 填写已有数据库的连接串
DIAN115 的数据库配置只需 DIAN115_DB_DRIVER=pgsql 和 DIAN115_PG_DSN。连接串的格式为 postgres://用户名:密码@地址:端口/库名。Host 网络填写宿主机或数据库服务器地址;桥接模式下,只有同一 Docker 网络才能用 postgres 这样的服务名。下面是已有数据库的填写格式。
DIAN115_DB_DRIVER=pgsql
DIAN115_PG_DSN=postgres://dian115:YourPassword@192.168.1.10:5432/dian115?sslmode=require5. 启动并完成首次设置
在 compose.yml 所在目录启动。打开 http://服务器IP:8095,设置管理员密码并按页面完成授权。应用连接 PostgreSQL 后自动创建当前业务表。首次使用 PostgreSQL 不需要先创建 SQLite 数据或运行迁移命令。
docker compose up -d postgres
docker compose up -d dian115
docker compose ps6. 确认当前数据库
打开“系统设置 → 基础设置 → 数据库维护”。“当前数据库”应显示 PostgreSQL、已连接,并显示实际库名和版本。继续配置网盘服务、账号与媒体目录。/config 必须继续持久化,不能因使用 PostgreSQL 而删除。
字段说明
| 字段 | 填写方法 |
|---|---|
| DIAN115_DB_DRIVER | pgsql 使用 PostgreSQL;不配置时默认 SQLite。 |
| DIAN115_PG_DSN | PostgreSQL 的直接连接串,包含用户名、密码、服务器地址、端口和库名。 |
| POSTGRES_PASSWORD | 示例 PostgreSQL 容器首次初始化账号的密码;不是 DIAN115 额外的数据库开关。 |
常见问题
connection refused 或连接失败
核对 PostgreSQL 是否已启动,以及连接串的地址、端口和容器网络。同机 Host 示例使用 127.0.0.1:15432;远程库使用远程主机的实际端口。
密码认证失败
核对 DSN 密码与数据库账号密码。POSTGRES_PASSWORD 仅在数据库目录为空时初始化账号,修改 .env 不会改写已有账号密码。