This commit is contained in:
zlwu committed 2026-09-11 21:03:53 +08:00
1 parent 195c89e6b7
commit d294ecad84
34 files changed
+8466 -7867

No files matched your search

+11 -2
View File
@@ -73,8 +73,17 @@ API_ENCRYPT_FAIL_OPEN=false
# 全量 API 请求日志(需 sys_api_request_log 表,否则可关闭)
API_REQUEST_LOG_ENABLED=false
# ---------- 微信支付(可选,不配则支付相关功能不可用)----------
# ---------- 微信服务号 OA 模板消息(模板未就绪时保持 false)----------
WX_MP_NOTIFY_ENABLED=false
# WX_MP_APPID=wxe576b24f873f47cb
# WX_MP_SECRET=
# WX_MP_TEMPLATE_APPROVAL=
# WX_MP_TEMPLATE_CC=
# WX_MP_TEMPLATE_APPLICANT_PROGRESS=
# ---------- 微信支付 / 小程序凭证(登录、模板消息跳转;Secret 勿提交真实值)----------
# WXPAY_MCHID=
# WXPAY_MINI_APPID=
# WXPAY_MINI_APPID=wx2b139581f4c855e4
# WXPAY_SECRET=
# WXPAY_API_KEY=
# WXPAY_NOTIFY_URL=https://your-domain.com/api/payment/notify
+67 -4
View File
@@ -93,15 +93,16 @@ sudo systemctl restart docker
```bash
./scripts/package-docker-deploy.sh # 默认日期版本
./scripts/package-docker-deploy.sh v1.0.0 # 指定版本号
./scripts/package-docker-deploy.sh v1.1.0 # 含 mobile-oa-h5(/oa-h5/)+ 微信开关
```
`package-docker-deploy.sh` 固定构建 **`linux/amd64`** 镜像(适配甲方 Linux x86 云主机)。仅在对方确认为 ARM 云主机时,发版前改脚本中的 `DOCKER_PLATFORM` 为 `linux/arm64`。
脚本会:
1. 本地 `docker build` 生成 `zkxw-backend:<版本>`、`zkxw-web:<版本>`
1. 本地 `docker build` 生成 `zkxw-backend:<版本>`、`zkxw-web:<版本>`(**web 镜像内含 web-admin + `/oa-h5/`(mobile-oa-h5)**)
2. `docker save` 导出为 `images/zkxw-app-images.tar`
3. 打包 compose、`.env.example`、`docs/sql/zkxw.sql`(**不含** `backend/`、`web-admin/` 源码)
3. 打包 compose、`.env.example`、`docs/sql/zkxw.sql`(**不含** `backend/`、`web-admin/`、`mobile-oa-h5/` 源码)
产物:`dist/zkxw-docker-deploy-<版本>.tar.gz`
@@ -148,11 +149,73 @@ zkxw-docker-deploy-<版本>/
└── VERSION.txt
```
**不包含**:`backend/`、`web-admin/`、Dockerfile、`.vue` / `.py` 业务源码。
**不包含**:`backend/`、`web-admin/`、`mobile-oa-h5/`、Dockerfile、`.vue` / `.py` 业务源码。
数据库脚本 `zkxw.sql` 仅为表结构与基线数据,非应用源代码。
Nginx 反代配置已打入 `zkxw-web` 镜像,无需单独配置。
Nginx 反代配置已打入 `zkxw-web` 镜像(含管理端 `/` 与 OA H5 `/oa-h5/`),无需单独配置。
---
## 3.1 从 v1.0.0 增量升级到 v1.1.0(小程序 OA H5 + 微信配置)
适用:已在运行 `zkxw-backend:v1.0.0` / `zkxw-web:v1.0.0`,数据卷保留,**不重装** MySQL/Redis/MinIO。
典型目录(以现网调查为准):
```text
/opt/zkxw/zkxw-docker-deploy-v1.0.0/deploy/docker
```
### 发版方
```bash
./scripts/package-docker-deploy.sh v1.1.0
# 产物:dist/zkxw-docker-deploy-v1.1.0.tar.gz
```
### 内网机(192.168.200.24)运维
```bash
# 1) 用户自行上传 tar 到内网机后解压(路径自定,示例)
cd /opt/zkxw
tar -xzf zkxw-docker-deploy-v1.1.0.tar.gz
docker load -i zkxw-docker-deploy-v1.1.0/images/zkxw-app-images.tar
# 2) 改现网 .env(保留原密码;追加/修改下列项)
cd /opt/zkxw/zkxw-docker-deploy-v1.0.0/deploy/docker
# ZKXW_BACKEND_IMAGE=zkxw-backend:v1.1.0
# ZKXW_WEB_IMAGE=zkxw-web:v1.1.0
# WXPAY_MINI_APPID=...
# WXPAY_SECRET=...
# WX_MP_APPID=...
# WX_MP_SECRET=...
# WX_MP_NOTIFY_ENABLED=false
# 3) 只滚动应用(数据卷不动)
docker compose up -d backend web
# 4) 本机验收
curl -sI http://127.0.0.1:8112/ | head -5
curl -sI http://127.0.0.1:8112/oa-h5/ | head -5
curl -s http://127.0.0.1:8112/health
```
### 公网网关 39.102.214.125(xwyd.zkxw.cn → 112.30.112.8:60001)
现网 `xwyd.zkxw.cn` 对 `/` 做整站 `proxy_pass` 到内网 `60001`,**一般无需改 Nginx**:
- `https://xwyd.zkxw.cn/` → 管理端
- `https://xwyd.zkxw.cn/oa-h5/` → OA H5(新)
- `https://xwyd.zkxw.cn/api/`、`/minio/zkxw/` → 随同反代
内网 `112.30.112.8:60001 → 192.168.200.24:8112` 映射**保持不动**。升级后公网验收:
```bash
curl -skI https://xwyd.zkxw.cn/oa-h5/ | head -5
```
若 `/oa-h5/` 404 而本机 `8112` 正常,再查网关是否对路径做了白名单(当前配置为整站反代则无需改)。
---
+11
View File
@@ -71,6 +71,17 @@ server {
}
}
# OA H5(mobile-oa-h5,vite base=/oa-h5/)
location = /oa-h5 {
return 301 /oa-h5/;
}
location ^~ /oa-h5/ {
root /usr/share/nginx/html;
try_files $uri $uri/ /oa-h5/index.html;
add_header Cache-Control "no-cache" always;
}
location / {
try_files $uri $uri/ /index.html;
}
+26
View File
@@ -2,6 +2,31 @@
ARG NODE_IMAGE=docker.m.daocloud.io/library/node:20-alpine
ARG NGINX_IMAGE=docker.m.daocloud.io/library/nginx:1.27-alpine
# ---------- OA H5(mobile-oa-h5 → /oa-h5/)----------
FROM ${NODE_IMAGE} AS oa-h5-builder
ARG NPM_REGISTRY=https://registry.npmmirror.com
ARG NODE_MAX_OLD_SPACE_SIZE=4096
ENV NODE_OPTIONS="--max-old-space-size=${NODE_MAX_OLD_SPACE_SIZE}"
ENV HUSKY=0
RUN npm config set registry "${NPM_REGISTRY}" \
&& npm config set fetch-retries 5 \
&& npm config set fetch-retry-mintimeout 60000 \
&& npm config set fetch-retry-maxtimeout 600000 \
&& npm config set fetch-timeout 600000
WORKDIR /oa-h5
COPY mobile-oa-h5/package.json mobile-oa-h5/package-lock.json ./
RUN --mount=type=cache,id=zkxw-oa-h5-npm,target=/root/.npm \
npm ci --no-audit --no-fund
COPY mobile-oa-h5/ .
# 同域 /api、/minio/zkxw + 生产服务号 AppID(见 .env.docker)
RUN npm run build -- --mode docker
# ---------- Web Admin ----------
FROM ${NODE_IMAGE} AS builder
ARG NPM_REGISTRY=https://registry.npmmirror.com
@@ -44,6 +69,7 @@ FROM ${NGINX_IMAGE}
COPY deploy/docker/nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist /usr/share/nginx/html
COPY --from=oa-h5-builder /oa-h5/dist /usr/share/nginx/html/oa-h5
EXPOSE 80