feat(部署): 新增 deployment/ 内外网两套按侧部署包

按 demo/ 的写法把交付包改成「角色由目录决定」:iw/ 拷内网机、ow/ 拷外网机,
各自含镜像 tar、SQL、配置与 install.sh,install.sh 不再收 iw/ow 参数。

前端不再打进镜像,改为静态包放在 <侧>/web/ 只读挂进 nginx:1.27-alpine,
现场临时改页面直接替换文件 + restart web 即可。数据仍全部挂宿主机,
子目录命名与 deploy/offline 一致(pgdata/redis/mq/upload/logs/gate),
默认根改为包内 ./volumes,放数据盘只改 .env 的 SFILE_DATA_ROOT。

后端镜像 sfile-app:1.0.1 含传输优化那一批(实测组包 11.4×、解包 9.9×)。
出包脚本 deployment/scripts/build-package.sh 负责 jar→镜像→前端双包→sql→tar→VERSION。
This commit is contained in:
KodouWZF
2026-11-04 21:44:56 +08:00
parent 339f2c34ab
commit d39b3b035d
884 changed files with 316455 additions and 0 deletions

71
deployment/iw/.env Normal file
View File

@@ -0,0 +1,71 @@
# =============================================================================
# s-file 部署配置 —— 内网机(iw)
#
# 装机后必须立刻改的两处:admin 登录口令(首次登录后在页面上改)、
# 新用户初始密码 USER_DEFAULT_PASSWORD
# 下面的库/MQ 口令是出厂默认值,交付单要抄一份并建议现场轮换。
# 现场改过的 .env 属于该台机器的实际配置,不要提交回仓库。
# =============================================================================
# ---------- 本机角色(内网机固定 iw,别改) ----------
SFILE_ROLE=iw
# 传输方向:内网机 1 / 外网机 2,写反了摆渡方向就反了
SFILE_TRANSFER_LOCATION=1
# ---------- 镜像(images/ 里的 tar docker load 后就是这些 tag) ----------
APP_IMAGE=sfile-app:1.1.0
NGINX_IMAGE=nginx:1.27-alpine
PG_IMAGE=postgres:18
REDIS_IMAGE=redis:8
MQ_IMAGE=rabbitmq:3.13-management-alpine
# postgres 18+ 数据目录挂载点是 /var/lib/postgresql,15- 要改成 /var/lib/postgresql/data
PG_DATA_DIR=/var/lib/postgresql
# ---------- 对外访问:只暴露前端 ----------
WEB_HOST=0.0.0.0
WEB_PORT=80
# ---------- 口令与密钥 ----------
POSTGRES_DB=s_file
POSTGRES_USER=sfile
POSTGRES_PASSWORD=Sfile-iw-Pg-N1tOz1MxgdaS
MQ_USER=sfile
MQ_PASSWORD=Sfile-iw-Mq-UTqVSnCDZ0LB
JWT_SECRET=86a6b015f3292eb3fdab298d3eced941da4276d47e24e924b82ab8adee397d70
USER_DEFAULT_PASSWORD=Sfile-iw-Usr-FBLS-0fA
# ---------- 发号器与容器网段(与外网机各用一段,同机并跑时才需要错开) ----------
APP_SUBNET=172.30.18.0/24
APP_GATEWAY=172.30.18.1
APP_NODE_IP=172.30.18.10
APP_WORK_ID=1
# ---------- 宿主机数据目录 ----------
# 默认落在本目录 volumes/ 下(相对 docker-compose.yml)。
# 要放到独立数据盘就改成绝对路径,例如 /data/sfile,改完 install.sh 会自动建目录
SFILE_DATA_ROOT=./volumes
# 光闸摆渡目录:out = 本机发出,in = 本机收到。
# 光闸设备要能访问到这两个路径,现场通常改成绝对路径并告知光闸厂商
GATE_SEND_DIR=./volumes/gate/out
GATE_RECV_DIR=./volumes/gate/in
# ---------- MeshSafe 文件安全检测 ----------
# 该侧没有部署 MeshSafe 就把 MESHSAFE_ENABLED 改成 false,下面几项可以不管
# 启用时凭证必须与 MeshSafe 侧 MESHSAFE_API_CLIENTS 白名单里的 client_id:secret 逐字一致
MESHSAFE_ENABLED=true
MESHSAFE_BASE_URL=http://host.docker.internal:44380
MESHSAFE_CLIENT_ID=sfile-iw
MESHSAFE_SECRET=CHANGE_ME_meshsafe_secret
MESHSAFE_CHANNEL=sfile-iw
# 等保从严建议 false:检测服务不可用时阻断而不是放行
MESHSAFE_FAIL_OPEN=true
MESHSAFE_TIMEOUT_SECONDS=120
MESHSAFE_POLL_TIMEOUT_MINUTES=60
MESHSAFE_POLL_CRON=0/10 * * * * ?
# ---------- 资源与运行时 ----------
TZ=Asia/Shanghai
APP_JAVA_OPTS=-Xms1g -Xmx3g -Dfile.encoding=UTF-8
REDIS_MAXMEMORY=512mb
# 摆渡目录监听周期。改这个要同步改 config/application.yml 的 round-budget-seconds(留 1 秒余量)
FILE_TRANSFER_MONITOR_CRON=0/5 * * * * ?