# sw2 Docker 部署 沿用 226 服务器 `/www/wwwroot/live.fuhua91.com` 的 Docker 网络、持久化目录和宝塔反向代理结构。使用独立的 `sw2-backend`、`sw2-frontend`、`sw2-net`,兼容服务器现有 Docker 18.06,不依赖 Compose。 ## 目录与端口 部署根目录为 `/www/wwwroot/sw2.fuhua91.com`: - `config/config.yaml`:后端运行配置,挂载到 `/data/conf`,UID 1000 可写。 - `runtime.env`:SDK 兼容参数,通过 Docker `--env-file` 加载,权限 600。 - `log/`、`uploads/`:日志与文件持久化目录。 - `releases//`:已校验的发布包;`current-release` 记录当前版本。 - 后端仅绑定 `127.0.0.1:9602`,前端仅绑定 `127.0.0.1:9601`。 - 宝塔 `sw2.fuhua91.com` 代理至 9601,前端容器将 `/api/` 转发至后端并去除前缀,支持 WebSocket、SSE 和文件上传。 数据库沿用已迁移并验证的 `sw9`,平台别名保留 `lx/hw/yq/oa`,Redis 沿用当前关闭状态。生产配置使用 `admin.app.env: production`,关闭开发 Swagger。五条常规商务任务启用,两个历史回填停用。**使用同一 sw9 时只运行一个调度实例,切换到服务器前停止本机的后端服务。** ## 构建与发布 Windows 本机安装 Go、Node、pnpm、tar,先提交源代码,再执行: ```powershell .\deploy\docker\build-package.ps1 ``` 输出位于 `.cache/deploy/sw2-.tar.gz` 及对应 SHA-256 文件。后端交叉编译为 Linux amd64,前端执行生产构建;包内只含二进制、前端产物、Dockerfile 和部署配置,真实运行配置及环境变量不进入镜像或 Git。 通过 SSH 将包上传到 226,校验 SHA-256 后解压到 `releases//`。首次部署另行准备上述私有配置文件,保持 `admin.router_prefix` 为空,并确认主库为 sw9。SDK 环境变量名称为 `SW_SDK_AUTH_CODE`、`SW_SDK_MIGRATE_AUTH_CODE`、`SW_SDK_TABLE_PREFIX`,值从已有私有运行配置取得。 ```bash bash /www/wwwroot/sw2.fuhua91.com/releases//deploy.sh --build-only # 构建和容器配置检查通过后,停止连接同一 sw9 的本机后端。 bash /www/wwwroot/sw2.fuhua91.com/releases//deploy.sh ``` 脚本先构建和检查镜像,再停止当前受管容器,保留一份停止的 `-previous` 容器。健康检查失败时恢复前一组容器。配置、上传文件和数据库不随镜像替换;索引迁移由后端启动按版本执行。 首次接入域名时,备份宝塔原站点配置,再安装 `bt-nginx-sw2.fuhua91.com.conf` 至 `/www/server/panel/vhost/nginx/`,执行 `/www/server/nginx/sbin/nginx -t` 通过后重载。模板保留证书验证目录,当前监听 HTTP;后续由宝塔为 sw2 单独配置匹配域名的证书。 验证首页、静态资源、`/api/health`、登录状态、商务接口和任务启停/执行日志。回退版本可执行 `bash /www/wwwroot/sw2.fuhua91.com/deploy.sh <旧commit>`;数据库迁移及业务数据不由镜像回退脚本撤销。