数据库配置
Redirect 支持 MySQL、MariaDB、PostgreSQL 和 SQLite 四种数据库驱动,通过 DB_DRIVER 环境变量切换。
数据库选择
| 数据库 | 驱动值 | 端口 | 当前版本 | 适用场景 |
|---|---|---|---|---|
| MySQL | mysql | 3306 | 9.7.0 | 生产环境,高并发 |
| MariaDB | mysql | 3306 | 12.3.2 | MySQL 替代品,完全兼容 |
| PostgreSQL | postgres | 5432 | 18.4 | 生产环境,功能丰富 |
| SQLite | sqlite | — | 轻量部署,单机/测试 |
MariaDB 使用DB_DRIVER: mysql,与 MySQL 协议完全兼容,无需额外适配。
环境变量对照表
| 变量 | MySQL/MariaDB | PostgreSQL | 说明 |
|---|---|---|---|
DB_DRIVER | mysql | postgres | 数据库驱动 |
DB_HOST | 数据库地址 | 数据库地址 | 主机地址 |
DB_PORT | 3306 | 5432 | 端口 |
DB_USER | 用户名 | 用户名 | 数据库用户 |
DB_PASSWORD | 密码 | 密码 | 数据库密码 |
DB_NAME | redirect | redirect | 数据库名 |
Docker Compose 配置示例
MySQL
services:
mysql:
image: mysql:9.7.0
container_name: redirect-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: redirect
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
backend:
environment:
DB_DRIVER: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_USER: root
DB_PASSWORD: your_password
DB_NAME: redirect MariaDB
services:
mariadb:
image: mariadb:12.3.2
container_name: redirect-mariadb
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: your_password
MARIADB_DATABASE: redirect
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- mariadb-data:/var/lib/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
backend:
environment:
DB_DRIVER: mysql
DB_HOST: mariadb
DB_PORT: 3306
DB_USER: root
DB_PASSWORD: your_password
DB_NAME: redirect PostgreSQL
services:
postgres:
image: postgres:18.4
container_name: redirect-postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: your_password
POSTGRES_DB: redirect
TZ: Asia/Shanghai
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d redirect"]
interval: 10s
timeout: 5s
retries: 5
backend:
environment:
DB_DRIVER: postgres
DB_HOST: postgres
DB_PORT: 5432
DB_USER: postgres
DB_PASSWORD: your_password
DB_NAME: redirect PostgreSQL 容器中的POSTGRES_USER必须与 backend 的DB_USER保持一致。
使用独立数据库用户
生产环境建议创建独立用户,而非使用 root:
MySQL/MariaDB
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: root_strong_password
MYSQL_DATABASE: redirect
MYSQL_USER: redirect
MYSQL_PASSWORD: your_password
backend:
environment:
DB_USER: redirect
DB_PASSWORD: your_password PostgreSQL
services:
postgres:
environment:
POSTGRES_USER: redirect
POSTGRES_PASSWORD: your_password
POSTGRES_DB: redirect
backend:
environment:
DB_USER: redirect
DB_PASSWORD: your_password 外部数据库配置
如果使用已有数据库(如 1Panel 自带数据库),只需配置 backend 环境变量:
DB_DRIVER: mysql
DB_HOST: your-db-host
DB_PORT: 3306
DB_USER: your-db-user
DB_PASSWORD: your-db-password
DB_NAME: redirect SQLite 配置
适合轻量部署,数据存储在本地文件:
DB_DRIVER: sqlite
DB_NAME: data/sqlite.db 了解更多部署方式请查看 部署指南。