优化服务端部署-测试部署-1

This commit is contained in:
yml
2026-04-14 23:27:56 +08:00
parent 24d5f233d9
commit 3b169df114
9 changed files with 96 additions and 67 deletions
-28
View File
@@ -1,28 +0,0 @@
# 当前模板用于 mac 本机 Docker 测试。
# 开发版 Caddy 会接受任意 Host,所以 ngrok / cloudflared 地址变化时通常只需要改 APP_BASE_URL。
APP_BASE_URL=http://localhost
# 如需给外部用户发送领取链接,把 APP_BASE_URL 改成当前公网地址。
# 只有当领取页入口与整站入口不同,才需要单独覆盖 CLAIM_BASE_URL。
TZ=Asia/Shanghai
BACKEND_PORT=3000
CLAIM_BASE_URL=http://localhost/#/claim
DATABASE_URL=postgres://postgres:postgres@postgres:5432/order_site
DATABASE_SSL=false
DATABASE_MAX_CONNECTIONS=10
DATA_ROOT=/app/data
LOG_LEVEL=info
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
TENCENT_REDEEM_PROOF_MODE=basic
TENCENT_BROWSER_HEADLESS=true
TENCENT_BROWSER_DEVTOOLS=false
TENCENT_BROWSER_PREWARM=true
TENCENT_BROWSER_KEEP_ALIVE=true
TENCENT_BROWSER_SLOW_MO=0
TENCENT_SESSION_DEBUG=false
ADMIN_SESSION_SECRET=dev-local-session-secret
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"dev-admin-123456","role":"admin"},{"username":"operator","password":"dev-operator-123456","role":"operator"}]
AGISO_APP_SECRET=
AGISO_MESSAGING_ENABLED=false
+46
View File
@@ -0,0 +1,46 @@
# 当前模板用于 mac 本机 Docker 调试。
# 开发版 Caddy 会接受任意 Host;如果你要给外部用户发领取链接,
# 只需要把 APP_BASE_URL / CLAIM_BASE_URL 改成当前公网地址。
APP_BASE_URL=http://localhost
TZ=Asia/Shanghai
BACKEND_PORT=3000
CLAIM_BASE_URL=http://localhost/#/claim
POSTGRES_DB=order_site
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DATABASE_URL=postgres://postgres:postgres@postgres:5432/order_site
DATABASE_SSL=false
DATABASE_MAX_CONNECTIONS=10
DATA_ROOT=/app/data
LOG_LEVEL=info
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
TENCENT_REDEEM_PROOF_MODE=basic
TENCENT_BROWSER_HEADLESS=false
TENCENT_BROWSER_DEVTOOLS=false
TENCENT_BROWSER_PREWARM=true
TENCENT_BROWSER_KEEP_ALIVE=true
TENCENT_BROWSER_SLOW_MO=200
TENCENT_SESSION_DEBUG=true
TENCENT_BROWSER_NOVNC_ENABLED=true
TENCENT_BROWSER_NOVNC_PORT=6080
TENCENT_BROWSER_VNC_PORT=5900
TENCENT_BROWSER_VNC_RESOLUTION=1600x900x24
ADMIN_SESSION_SECRET=dev-local-session-secret
ADMIN_SESSION_TTL_HOURS=12
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"dev-admin-123456","role":"admin"},{"username":"operator","password":"dev-operator-123456","role":"operator"}]
AGISO_APP_SECRET=
AGISO_MESSAGING_ENABLED=true
AGISO_TRADE_DETAIL_ENDPOINT=https://gw-api.agiso.com/aldsIdle/Order/Detail
AGISO_TRADE_DETAIL_API_VERSION=1
AGISO_TRADE_DETAIL_TIMEOUT_MS=5000
AGISO_AUTO_DELIVERY_ENABLED=true
AGISO_AUTO_DELIVERY_ENDPOINT=https://gw-api.agiso.com/aldsIdle/Order/DummySend
AGISO_AUTO_DELIVERY_API_VERSION=1
AGISO_MESSAGE_API_VERSION=1
AGISO_SEND_MESSAGE_ENDPOINT=https://gw-api.agiso.com/aldsIdle/ImMsg/SendMsg
-25
View File
@@ -1,25 +0,0 @@
APP_DOMAIN=order.example.com
APP_BASE_URL=https://order.example.com
TZ=Asia/Shanghai
BACKEND_PORT=3000
CLAIM_BASE_URL=https://order.example.com/#/claim
DATABASE_URL=postgres://postgres:replace-with-strong-password@postgres:5432/order_site
DATABASE_SSL=false
DATABASE_MAX_CONNECTIONS=20
DATA_ROOT=/app/data
LOG_LEVEL=info
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
TENCENT_REDEEM_PROOF_MODE=basic
TENCENT_BROWSER_HEADLESS=true
TENCENT_BROWSER_DEVTOOLS=false
TENCENT_BROWSER_PREWARM=true
TENCENT_BROWSER_KEEP_ALIVE=true
TENCENT_BROWSER_SLOW_MO=0
TENCENT_SESSION_DEBUG=false
ADMIN_SESSION_SECRET=replace-with-a-long-random-secret
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"replace-with-strong-admin-password","role":"admin"},{"username":"operator","password":"replace-with-strong-operator-password","role":"operator"}]
AGISO_APP_SECRET=
AGISO_MESSAGING_ENABLED=false
+19 -2
View File
@@ -1,16 +1,24 @@
APP_DOMAIN=order.khhao.com
APP_BASE_URL=https://order.khhao.com
CADDY_SITE_ADDR=https://order.khhao.com
TZ=Asia/Shanghai
BACKEND_PORT=3000
CLAIM_BASE_URL=https://order.khhao.com/#/claim
CLAIM_TOKEN_TTL_HOURS=24
POSTGRES_DB=order_site
POSTGRES_USER=postgres
POSTGRES_PASSWORD=FACCqheAzy51op0RFdbv
DATABASE_URL=postgres://postgres:FACCqheAzy51op0RFdbv@postgres:5432/order_site
DATABASE_SSL=false
DATABASE_MAX_CONNECTIONS=20
DATA_ROOT=/app/data
LOG_LEVEL=info
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
TENCENT_REDEEM_PROOF_MODE=basic
TENCENT_REDEEM_PROOF_MODE=full
TENCENT_BROWSER_HEADLESS=true
TENCENT_BROWSER_DEVTOOLS=false
TENCENT_BROWSER_PREWARM=true
@@ -19,7 +27,16 @@ TENCENT_BROWSER_SLOW_MO=0
TENCENT_SESSION_DEBUG=false
ADMIN_SESSION_SECRET=xm4BDpbdHJvU4RIlpGqD0nvQTZtIidvQMk6LSP1d
ADMIN_SESSION_TTL_HOURS=12
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"Mzl5iG6pkdrzLs73COiB","role":"admin"},{"username":"operator","password":"d9tvmbPPMRdLySEhORzk","role":"operator"}]
AGISO_APP_SECRET=tccxk5c7ppy7xpr43rvastceyydskfha
AGISO_MESSAGING_ENABLED=false
AGISO_MESSAGING_ENABLED=true
AGISO_TRADE_DETAIL_ENDPOINT=https://gw-api.agiso.com/aldsIdle/Order/Detail
AGISO_TRADE_DETAIL_API_VERSION=1
AGISO_TRADE_DETAIL_TIMEOUT_MS=5000
AGISO_AUTO_DELIVERY_ENABLED=true
AGISO_AUTO_DELIVERY_ENDPOINT=https://gw-api.agiso.com/aldsIdle/Order/DummySend
AGISO_AUTO_DELIVERY_API_VERSION=1
AGISO_MESSAGE_API_VERSION=1
AGISO_SEND_MESSAGE_ENDPOINT=https://gw-api.agiso.com/aldsIdle/ImMsg/SendMsg
+2 -2
View File
@@ -44,7 +44,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
### Local Development (without Docker)
```bash
# Backend
cp .env.development.example .env
cp .env.mac-docker.example .env
cd apps/backend
npm install
npm run dev # node --watch restart on src/ changes
@@ -61,7 +61,7 @@ uv sync
### Docker Development (recommended)
```bash
cp .env.development.example .env
cp .env.mac-docker.example .env
docker compose -f docker-compose.dev.yml up -d --build
# Access: http://localhost, noVNC: http://localhost:6080/vnc.html
```
+26 -7
View File
@@ -28,7 +28,7 @@ npm run dev
后端:
```bash
cp .env.development.example .env
cp .env.mac-docker.example .env
cd apps/backend/subservices/ocr-worker
uv sync
cd apps/backend
@@ -39,15 +39,34 @@ npm run dev
## Docker 部署
```bash
cp .env.production.example .env
docker compose build
cp .env.server.example .env
mkdir -p deploy/data/backend
docker compose up -d
```
生产版 Compose 现在会把后端运行数据直接挂载到宿主机目录:
- `deploy/data/backend`
这样服务器上可以直接查看和备份:
- `logs/`
- `browser-sessions/`
- `redeem-screenshots/`
- `agiso-shops.json`
- `order-fulfillment-bindings.json`
如果你本地已经配好了店铺和履约绑定,首次上线前可以把这两份文件先放进去:
- `deploy/data/backend/agiso-shops.json`
- `deploy/data/backend/order-fulfillment-bindings.json`
后端启动时会自动执行数据库 migration、初始化默认管理员、同步履约目录;但 `/app/data` 下的业务配置文件仍以宿主机目录内容为准。
## Docker 本地开发
```bash
cp .env.development.example .env
cp .env.mac-docker.example .env
docker compose -f docker-compose.dev.yml up -d --build
```
@@ -126,12 +145,12 @@ docker compose build \
- [服务器部署教程](/Users/yml/codes/order-site-workspace/docs/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B.md)
- [首次上线检查清单](/Users/yml/codes/order-site-workspace/docs/%E9%A6%96%E6%AC%A1%E4%B8%8A%E7%BA%BF%E6%A3%80%E6%9F%A5%E6%B8%85%E5%8D%95.md)
- [开发环境模板](/Users/yml/codes/order-site-workspace/.env.development.example)
- [生产环境模板](/Users/yml/codes/order-site-workspace/.env.production.example)
- [mac 本地 Docker 调试模板](/Users/yml/codes/order-site-workspace/.env.mac-docker.example)
- [服务器部署模板](/Users/yml/codes/order-site-workspace/.env.server.example)
## 迁移原则
- 不重写现有业务代码
- 先统一目录、部署和配置
- 生产环境优先使用 `.env` Docker 卷
- 生产环境优先使用 `.env`宿主机数据目录挂载
- 本机 Docker 调试优先使用 [docker-compose.dev.yml](/Users/yml/codes/order-site-workspace/docker-compose.dev.yml)
+1 -1
View File
@@ -27,7 +27,7 @@ uv sync
复制并填写环境变量后启动:
```bash
cp /Users/yml/codes/order-site-workspace/.env.development.example /Users/yml/codes/order-site-workspace/.env
cp /Users/yml/codes/order-site-workspace/.env.mac-docker.example /Users/yml/codes/order-site-workspace/.env
cd /Users/yml/codes/order-site-workspace/apps/backend
npm run dev
```
+1
View File
@@ -0,0 +1 @@
+1 -2
View File
@@ -50,7 +50,7 @@ services:
AGISO_MESSAGING_ENABLED: ${AGISO_MESSAGING_ENABLED:-false}
AGISO_MESSAGE_APP_SECRET: ${AGISO_MESSAGE_APP_SECRET:-}
volumes:
- backend_data:/app/data
- ./deploy/data/backend:/app/data
web:
build:
@@ -74,7 +74,6 @@ services:
- caddy_config:/config
volumes:
backend_data:
postgres_data:
caddy_data:
caddy_config: