fix(部署): 交付包容器内路径与老系统对齐,日志与临时目录落数据盘
库里 xs_file_record.file_path 存的是 file.upload-dir 拼出来的绝对路径,老系统是 /var/s-file/upload,新包之前写 /data/upload 会让接老库的历史文件全部读不到(只能迁库), 现在容器内逐字一致,宿主机侧仍由 .env 的 SFILE_DATA_ROOT 决定。 顺带把两处老配置没真正落地的补上: - logging.file.name 沿用 /usr/local/logs/s-file.log。之前 /app/logs 挂载是空的——yml 没设 文件日志,输出只进 docker 的 json-file 且不封顶;同时给 app 的 json 日志加 20m×5 上限 - java.io.tmpdir 用 -D 指到 upload 挂载内。老项目把这行写在 application.properties 里 并不会改 JVM 系统属性,等于没生效;现在 500MB 上传缓冲落在数据盘而不是容器 overlay 层 摆渡目录保持容器内 /data/transfer/*:光闸需要能单独挂它,嵌进 upload 树会把整个文件库 暴露给光闸,而传输包是过路文件、路径不入库。宿主机侧照旧可与老机器同路径(GATE_*)。 内外网两套 compose/config/install.sh 仍字节一致。
This commit is contained in:
@@ -79,7 +79,10 @@ deployment/
|
||||
| `rabbitmq` | `3.13-management-alpine` | 84M | 验证过 3.13.7 |
|
||||
|
||||
> `sfile-app:1.0.1`(对应 git tag `v1.0.1`)相比 `1.0.0` 是传输链路性能优化那一批(监听周期 60s→5s、读写缓冲 64KB、已压缩格式不再二次压缩、`md5_code` 加索引、单轮时间预算)。对照实测:端到端 123.1s → 9.9s,组包 11.4×、解包 9.9×,包体 +3.63%;详见 `backend/docs/传输链路性能优化方案.md` §10。
|
||||
> 版本对应关系:git tag `v1.0.1` = 镜像 `sfile-app:1.0.1` = `.env` 的 `APP_IMAGE`,出包脚本按版本号一次对齐。
|
||||
> 版本对应关系:git tag 是**包版本**,镜像 tag 是 **jar 版本**,两者可以不同。
|
||||
> 当前 git tag `v1.0.2` 只是包配置修订(容器内路径与老系统对齐、日志落盘、`java.io.tmpdir` 落数据盘),
|
||||
> 镜像与 jar 未变,仍是 `sfile-app:1.0.1` = `.env` 的 `APP_IMAGE`,`images/*.tar` 不用重出;
|
||||
> 下次 jar 有改动时再用 `build-package.sh <新版本>` 把包版本与镜像版本一起对齐。
|
||||
|
||||
### 2.2 数据挂载对照(命名/位置与之前一致)
|
||||
|
||||
@@ -88,12 +91,20 @@ deployment/
|
||||
| PostgreSQL | `/var/lib/postgresql` | `volumes/pgdata` | `/data/sfile/pgdata` |
|
||||
| Redis | `/data` | `volumes/redis` | `/data/sfile/redis` |
|
||||
| RabbitMQ | `/var/lib/rabbitmq` | `volumes/mq` | `/data/sfile/mq` |
|
||||
| 上传文件本体 | `/data/upload` | `volumes/upload` | `/data/sfile/upload` |
|
||||
| 后端日志 | `/app/logs` | `volumes/logs` | `/data/sfile/logs` |
|
||||
| 上传文件本体 | `/var/s-file/upload`(**与老系统逐字一致**) | `volumes/upload` | `/data/sfile/upload` |
|
||||
| 后端日志 | `/usr/local/logs/s-file.log`(**与老系统一致**) | `volumes/logs` | `/data/sfile/logs` |
|
||||
| 摆渡发出/收到 | `/data/transfer/send`、`/receive` | `volumes/gate/out`、`in` | `/data/sfile/gate/out`、`in` |
|
||||
|
||||
子目录名与 compose 里的写法完全沿用,只是根目录默认从 `/data/sfile` 改成包内 `./volumes`(整目录自包含、拷走就能跑)。放独立数据盘就把 `.env` 的 `SFILE_DATA_ROOT`、`GATE_SEND_DIR`、`GATE_RECV_DIR` 改成绝对路径,重跑 `install.sh` 即可,compose 不用动。
|
||||
|
||||
> **容器内的这两个路径不是随便写的,别改回去。** 上传文件在库里存的是拼接好的绝对路径
|
||||
> (`FileServiceImpl` 取 `file.upload-dir` 拼 `orgId/fileCode` 写进 `xs_file_record.file_path`,下载时直接
|
||||
> `new FileInputStream` 读它),老库里的前缀是 `/var/s-file/upload`,所以容器内必须也叫这个名,
|
||||
> 否则历史文件全部读不到、只能迁库。日志同理,沿用老系统的 `/usr/local/logs`,运维脚本不用改。
|
||||
> 只有摆渡目录例外:传输包是过路文件、路径不入库,且光闸要单独挂它,所以留在 `/data/transfer/*`。
|
||||
> 改 `file.upload-dir` 必须同时改 compose 里 app 的挂载点,两处逐字相同(`deploy/offline/` 那套仍是旧的
|
||||
> `/data/upload`,不要与本包混用)。
|
||||
|
||||
---
|
||||
|
||||
## 3. 现场要先定的 6 件事(都在 `.env`)
|
||||
|
||||
Reference in New Issue
Block a user