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

View File

@@ -0,0 +1 @@
import{t as e}from"./useLocation-B-0SqFIj.js";import{$ as t,G as n,H as r,I as i,K as a,L as o,Q as s,Qt as c,U as l,V as u,W as d,Zt as f,_n as p,en as m,et as h,ln as g,mn as _,nn as v,q as y,qn as b,rt as x,tt as S,un as C,xt as w,yn as T,zn as E}from"./index-BaTxSAlR.js";var D=b(E(),1);function O({className:e,...t}){return(0,D.jsx)(`div`,{"data-slot":`empty`,className:m(`flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12`,e),...t})}function k({className:e,...t}){return(0,D.jsx)(`div`,{"data-slot":`empty-header`,className:m(`flex max-w-sm flex-col items-center gap-2 text-center`,e),...t})}var A=v(`flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0`,{variants:{variant:{default:`bg-transparent`,icon:`bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6`}},defaultVariants:{variant:`default`}});function j({className:e,variant:t=`default`,...n}){return(0,D.jsx)(`div`,{"data-slot":`empty-icon`,"data-variant":t,className:m(A({variant:t,className:e})),...n})}function M({className:e,...t}){return(0,D.jsx)(`div`,{"data-slot":`empty-title`,className:m(`text-lg font-medium tracking-tight`,e),...t})}var N=s({accessCode:t().length(6,{message:`提取码只能是6位`}).nonempty({message:`提取码不能为空`})}),P=`森睿智传`;function F(){let t=p(),s=S({resolver:h(N),defaultValues:{accessCode:``}}),m=i.useSearch(),{mutateAsync:v,isPending:b}=T({mutationFn:e=>w(e),onSuccess(e,n){t.navigate({to:`/extract/list?accessCode=`+n.accessCode+`&shareId=`+n.shareId})}}),E=e=>{g.promise(v({...m,...e}),{loading:`校验中`,success:`校验通过`})},A=x(),F=e();return!A&&F.pathname===`/extract`?(0,D.jsx)(_,{to:`/login?redirect=`+encodeURIComponent(encodeURIComponent(F.href))}):(0,D.jsx)(`div`,{className:`flex items-center justify-center min-h-screen box-border`,children:(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex justify-center items-center mb-4 gap-2`,children:[(0,D.jsx)(`img`,{src:o,alt:``,className:`size-12 object-contain rounded-full bg-white overflow-hidden`}),(0,D.jsx)(`div`,{className:`text-3xl`,children:P})]}),(0,D.jsxs)(`div`,{className:`w-[480px] p-10 bg-white rounded-xl`,children:[(0,D.jsx)(`div`,{className:`text-center text-2xl`,children:`文件提取`}),m.shareId?(0,D.jsx)(r,{...s,children:(0,D.jsxs)(`form`,{onSubmit:s.handleSubmit(E),className:`space-y-8 mt-12`,children:[(0,D.jsx)(d,{control:s.control,name:`accessCode`,render:({field:e})=>(0,D.jsxs)(n,{children:[(0,D.jsx)(a,{children:`提取码`}),(0,D.jsx)(l,{children:(0,D.jsx)(u,{placeholder:`请输入提取码`,...e})}),(0,D.jsx)(y,{})]})}),(0,D.jsxs)(c,{type:`submit`,className:`w-full`,disabled:b,children:[b&&(0,D.jsx)(f,{}),`提交`]})]})}):(0,D.jsx)(O,{children:(0,D.jsxs)(k,{children:[(0,D.jsx)(j,{variant:`default`,children:(0,D.jsx)(C,{size:24})}),(0,D.jsx)(M,{children:`无效的分享链接`})]})})]})]})})}export{F as component};