优化服务端部署-测试部署-1
This commit is contained in:
@@ -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
|
|
||||||
@@ -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
|
||||||
@@ -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
|
|
||||||
@@ -1,16 +1,24 @@
|
|||||||
APP_DOMAIN=order.khhao.com
|
APP_DOMAIN=order.khhao.com
|
||||||
APP_BASE_URL=https://order.khhao.com
|
APP_BASE_URL=https://order.khhao.com
|
||||||
|
CADDY_SITE_ADDR=https://order.khhao.com
|
||||||
|
|
||||||
TZ=Asia/Shanghai
|
TZ=Asia/Shanghai
|
||||||
BACKEND_PORT=3000
|
BACKEND_PORT=3000
|
||||||
CLAIM_BASE_URL=https://order.khhao.com/#/claim
|
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_URL=postgres://postgres:FACCqheAzy51op0RFdbv@postgres:5432/order_site
|
||||||
DATABASE_SSL=false
|
DATABASE_SSL=false
|
||||||
DATABASE_MAX_CONNECTIONS=20
|
DATABASE_MAX_CONNECTIONS=20
|
||||||
|
|
||||||
DATA_ROOT=/app/data
|
DATA_ROOT=/app/data
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
|
OCR_PROJECT_ROOT=/app/subservices/ocr-worker
|
||||||
TENCENT_REDEEM_PROOF_MODE=basic
|
|
||||||
|
TENCENT_REDEEM_PROOF_MODE=full
|
||||||
TENCENT_BROWSER_HEADLESS=true
|
TENCENT_BROWSER_HEADLESS=true
|
||||||
TENCENT_BROWSER_DEVTOOLS=false
|
TENCENT_BROWSER_DEVTOOLS=false
|
||||||
TENCENT_BROWSER_PREWARM=true
|
TENCENT_BROWSER_PREWARM=true
|
||||||
@@ -19,7 +27,16 @@ TENCENT_BROWSER_SLOW_MO=0
|
|||||||
TENCENT_SESSION_DEBUG=false
|
TENCENT_SESSION_DEBUG=false
|
||||||
|
|
||||||
ADMIN_SESSION_SECRET=xm4BDpbdHJvU4RIlpGqD0nvQTZtIidvQMk6LSP1d
|
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"}]
|
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"Mzl5iG6pkdrzLs73COiB","role":"admin"},{"username":"operator","password":"d9tvmbPPMRdLySEhORzk","role":"operator"}]
|
||||||
|
|
||||||
AGISO_APP_SECRET=tccxk5c7ppy7xpr43rvastceyydskfha
|
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
|
||||||
@@ -44,7 +44,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
### Local Development (without Docker)
|
### Local Development (without Docker)
|
||||||
```bash
|
```bash
|
||||||
# Backend
|
# Backend
|
||||||
cp .env.development.example .env
|
cp .env.mac-docker.example .env
|
||||||
cd apps/backend
|
cd apps/backend
|
||||||
npm install
|
npm install
|
||||||
npm run dev # node --watch restart on src/ changes
|
npm run dev # node --watch restart on src/ changes
|
||||||
@@ -61,7 +61,7 @@ uv sync
|
|||||||
|
|
||||||
### Docker Development (recommended)
|
### Docker Development (recommended)
|
||||||
```bash
|
```bash
|
||||||
cp .env.development.example .env
|
cp .env.mac-docker.example .env
|
||||||
docker compose -f docker-compose.dev.yml up -d --build
|
docker compose -f docker-compose.dev.yml up -d --build
|
||||||
# Access: http://localhost, noVNC: http://localhost:6080/vnc.html
|
# Access: http://localhost, noVNC: http://localhost:6080/vnc.html
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ npm run dev
|
|||||||
后端:
|
后端:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.development.example .env
|
cp .env.mac-docker.example .env
|
||||||
cd apps/backend/subservices/ocr-worker
|
cd apps/backend/subservices/ocr-worker
|
||||||
uv sync
|
uv sync
|
||||||
cd apps/backend
|
cd apps/backend
|
||||||
@@ -39,15 +39,34 @@ npm run dev
|
|||||||
## Docker 部署
|
## Docker 部署
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.production.example .env
|
cp .env.server.example .env
|
||||||
docker compose build
|
mkdir -p deploy/data/backend
|
||||||
docker compose up -d
|
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 本地开发
|
## Docker 本地开发
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.development.example .env
|
cp .env.mac-docker.example .env
|
||||||
docker compose -f docker-compose.dev.yml up -d --build
|
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/%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/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)
|
- [mac 本地 Docker 调试模板](/Users/yml/codes/order-site-workspace/.env.mac-docker.example)
|
||||||
- [生产环境模板](/Users/yml/codes/order-site-workspace/.env.production.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)
|
- 本机 Docker 调试优先使用 [docker-compose.dev.yml](/Users/yml/codes/order-site-workspace/docker-compose.dev.yml)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ uv sync
|
|||||||
复制并填写环境变量后启动:
|
复制并填写环境变量后启动:
|
||||||
|
|
||||||
```bash
|
```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
|
cd /Users/yml/codes/order-site-workspace/apps/backend
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
+1
-2
@@ -50,7 +50,7 @@ services:
|
|||||||
AGISO_MESSAGING_ENABLED: ${AGISO_MESSAGING_ENABLED:-false}
|
AGISO_MESSAGING_ENABLED: ${AGISO_MESSAGING_ENABLED:-false}
|
||||||
AGISO_MESSAGE_APP_SECRET: ${AGISO_MESSAGE_APP_SECRET:-}
|
AGISO_MESSAGE_APP_SECRET: ${AGISO_MESSAGE_APP_SECRET:-}
|
||||||
volumes:
|
volumes:
|
||||||
- backend_data:/app/data
|
- ./deploy/data/backend:/app/data
|
||||||
|
|
||||||
web:
|
web:
|
||||||
build:
|
build:
|
||||||
@@ -74,7 +74,6 @@ services:
|
|||||||
- caddy_config:/config
|
- caddy_config:/config
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
backend_data:
|
|
||||||
postgres_data:
|
postgres_data:
|
||||||
caddy_data:
|
caddy_data:
|
||||||
caddy_config:
|
caddy_config:
|
||||||
|
|||||||
Reference in New Issue
Block a user