Files
2026-09-19 16:35:35 +08:00

57 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据库切换 / Database
支持 4 种数据库,通过 start.sh 关键字选择(四选一,默认 `mysql`):`mysql``postgresql`(别名 `pg`)、`oracle``kingbase`(别名 `kingbase9`)。
## 对应 compose 文件
| 关键字 | compose 文件(位于 compose/ | 镜像 | 默认宿主机端口 |
| --- | --- | --- | --- |
| mysql | compose/compose-mysql.yaml | mysql:latest | 13306 |
| postgresql / pg | compose/compose-postgresql.yaml | postgres:17 | 15432 |
| oracle | compose/compose-oracle.yaml | gvenzl/oracle-free:23-slim | 11521 |
| kingbase / kingbase9 | compose/compose-kingbase.yaml | kingbase V9(需 license | 54321 |
## 使用示例
```bash
# PostgreSQL 中间件(源码开发)
./start.sh postgresql middleware
# Oracle 全栈
./start.sh oracle all
# Kingbase 全栈(.env 中需配置 KINGBASE_LICENSE_FILE 指向 ../../kingbase/ 下的 license.dat
./start.sh kingbase all
# 切换后停止(关键字保持一致)
./stop.sh postgresql middleware down
```
## 自动建库
`start.sh` 会在启动后自动确保应用数据库存在(不存在则创建):
| 数据库 | 使用的变量 | 默认库名 |
| --- | --- | --- |
| mysql | MYSQL_DATABASE / MYSQL_ROOT_PASSWORD | bytedesk |
| postgresql | POSTGRES_DB / POSTGRES_PASSWORD | bytedesk |
| oracle | ORACLE_DATABASE / ORACLE_PASSWORD / ORACLE_APP_USER / ORACLE_APP_USER_PASSWORD | BYTEDESKPDB |
| kingbase | KINGBASE_DATABASE / KINGBASE_DB_PASSWORD | bytedesk |
## 应用侧连接注入
bytedesk 应用的数据源连接(`SPRING_DATASOURCE_URL/USERNAME/PASSWORD` 等)由 `start.sh` 按所选数据库自动注入并写入 `.env.app`
- 使用 mysql 时指向 `bytedesk-mysql:3306`
- 使用 postgresql 时指向 `bytedesk-postgresql:5432`(附带 postgres Driver
- 使用 oracle 时指向 `bytedesk-oracle:1521/FREEPDB1`
- 使用 kingbase 时指向 `bytedesk-kingbase:54321`(附带 PostgreSQLDialect、quartz/batch/flowable postgres 适配、关闭 liquibase
如需完全接管,可在 `.env` 中显式配置 `SPRING_DATASOURCE_*`(优先级高于脚本注入),或通过 shell 环境变量覆盖。详见 [readme.env.md](./readme.env.md)。
## 限制
- **freeswitch/mrcpcall)仅支持 mysql / postgresql**`./start.sh call oracle` 会直接报错
- Kingbase 需要 license 文件(默认取 `deploy/kingbase/` 下的专业版 dat,可在 .env 覆盖)
- 切换数据库不会迁移数据;各数据库使用独立数据卷(如 bytedesk_mysql_data / bytedesk_postgresql_data