# 09 — 编译部署指南 > 本文档涵盖 Genex 券金融平台全栈系统的编译、运行与生产部署流程。 --- ## 目录 - [1. 前置条件](#1-前置条件) - [2. 本地一键启动](#2-本地一键启动) - [2.1 启动后端(基础设施 + 微服务)](#21-启动后端基础设施--微服务) - [2.2 数据库迁移与种子数据](#22-数据库迁移与种子数据) - [2.3 启动区块链网络](#23-启动区块链网络) - [2.4 部署智能合约](#24-部署智能合约) - [2.5 启动区块浏览器(可选)](#25-启动区块浏览器可选) - [2.6 启动监控栈(可选)](#26-启动监控栈可选) - [2.7 启动管理后台前端](#27-启动管理后台前端) - [2.8 运行端到端测试](#28-运行端到端测试) - [3. 单独编译各组件](#3-单独编译各组件) - [3.1 NestJS 后端服务](#31-nestjs-后端服务) - [3.2 Go 后端服务](#32-go-后端服务) - [3.3 Genex 区块链节点](#33-genex-区块链节点) - [3.4 智能合约(Foundry)](#34-智能合约foundry) - [3.5 Flutter 移动端](#35-flutter-移动端) - [3.6 管理后台 Next.js](#36-管理后台-nextjs) - [3.7 小程序 (Taro)](#37-小程序-taro) - [4. Docker 镜像构建](#4-docker-镜像构建) - [4.1 NestJS 服务镜像](#41-nestjs-服务镜像) - [4.2 Go 服务镜像](#42-go-服务镜像) - [4.3 Genex Chain 镜像](#43-genex-chain-镜像) - [4.4 Admin Web 镜像](#44-admin-web-镜像) - [5. 生产部署](#5-生产部署) - [5.1 Admin Web + Nginx + SSL](#51-admin-web--nginx--ssl) - [5.2 安全加固要点](#52-安全加固要点) - [5.3 环境变量配置](#53-环境变量配置) - [6. 基础设施配置](#6-基础设施配置) - [6.1 Kong API 网关路由表](#61-kong-api-网关路由表) - [6.2 健康检查](#62-健康检查) - [7. 端口总览](#7-端口总览) - [8. CI/CD 管线](#8-cicd-管线) - [9. deploy.sh 部署管理脚本](#9-deploysh-部署管理脚本) - [9.1 后端主控脚本](#91-后端主控脚本--backenddeploysh) - [9.2 各服务独立脚本](#92-各服务独立脚本--backendservicesnamedeploysh) - [9.3 区块链脚本](#93-区块链脚本--blockchaindeploysh) - [9.4 编译策略说明](#94-编译策略说明) --- ## 1. 前置条件 | 工具 | 版本要求 | 用途 | |------|----------|------| | Docker + Docker Compose | 最新稳定版 | 容器编排,全栈运行 | | Node.js | 20+ | NestJS 服务、Admin Web、小程序 | | Go | 1.22+ | Trading / Translate / Chain-Indexer / Genex Chain | | Flutter | 3.x | genex-mobile / admin-app | | Foundry (forge) | 最新 nightly | 智能合约编译与测试 | | PostgreSQL 客户端(可选) | 15+ | 手动执行迁移脚本 | --- ## 2. 本地一键启动 > 最简路径:在 `backend/` 和 `blockchain/` 目录分别执行 `docker compose up -d`,即可拉起完整后端 + 区块链环境。所有 API 通过 Kong 网关统一暴露在 `http://localhost:8080/api/v1/*`。 ### 2.1 启动后端(基础设施 + 微服务) ```bash cd backend/ cp .env.example .env # 首次需复制并按需修改 docker compose up -d ``` 该命令启动以下全部服务: **基础设施(6 组件):** | 服务 | 技术 | 端口 | 说明 | |------|------|------|------| | PostgreSQL | 15 | 5432 | WAL 复制已启用(供 Debezium CDC) | | Redis | 7 | 6379 | 缓存、分布式锁 | | Kafka | 7.7.0 KRaft | 9092 / 29092 | 消息队列(无 Zookeeper) | | MinIO | latest | 9000 / 9001 | S3 兼容对象存储 | | Kafka Connect | Debezium 2.5.4 | 8083 | CDC 变更数据捕获 | | Kong | 3.5 | 8080 / 8001 | API 网关(声明式配置) | **NestJS 微服务(7 个):** | 服务 | 端口 | 职责 | |------|------|------| | auth-service | 3010 | JWT 认证、RBAC 权限 | | user-service | 3001 | 用户、KYC、钱包、消息 | | issuer-service | 3002 | 发行方、券管理 | | clearing-service | 3004 | 清算结算、支付 | | compliance-service | 3005 | KYC/AML、Travel Rule | | ai-service | 3006 | AI 防腐层(外部 Agent 集群) | | notification-service | 3008 | 邮件、短信、推送 | **Go 微服务(3 个):** | 服务 | 端口 | 职责 | |------|------|------| | trading-service | 3003 | 内存撮合引擎(价格-时间优先) | | translate-service | 3007 | UX 翻译、地址映射、Gas 补贴 | | chain-indexer | 3009 | Genex Chain 区块索引 | **辅助服务(2 个):** | 服务 | 端口 | 职责 | |------|------|------| | telemetry-service | 3011 | 用户在线状态、DAU、Prometheus 指标 | | admin-service | 3012 | App 版本管理、OTA 更新 | ### 2.2 数据库迁移与种子数据 ```bash cd backend/ ./scripts/migrate.sh # 仅迁移 ./scripts/migrate.sh --seed # 迁移 + 种子数据 ``` 共 31 个 SQL 迁移文件,按文件名顺序执行。默认连接:`postgresql://genex:genex_dev@localhost:5432/genex`。 ### 2.3 启动区块链网络 ```bash cd blockchain/ docker compose up -d ``` 启动 6 个节点的验证者网络: | 节点 | 角色 | 区域标识 | |------|------|----------| | genex-node-1 | 创世验证者(主) | us-east-1 | | genex-node-2 | 创世验证者 | us-west-1 | | genex-node-3 | 创世验证者 | sg-1 | | genex-inst-1 | 机构验证者 | — | | genex-inst-2 | 机构验证者 | — | | genex-regulatory | 监管只读节点 | — | 链参数:Chain ID = `genex-1`(生产)/ `genex-localnet`(开发),EVM Chain ID = `8888`,Denom = `agnx`(18 位精度)。 ### 2.4 部署智能合约 ```bash cd blockchain/ docker compose --profile deploy run contract-deployer ``` 一次性任务,部署 9 个核心合约到链上。 ### 2.5 启动区块浏览器(可选) ```bash cd blockchain/ docker compose -f docker-compose.yml -f docker-compose.explorer.yml up -d ``` | 服务 | 端口 | 说明 | |------|------|------| | Blockscout | 4000 | EVM 区块浏览器 | | Blockscout DB | — | PostgreSQL 16(200 连接,2GB shared_buffers) | | Blockscout Redis | 6380 | 512MB maxmemory,allkeys-lru | | Smart Contract Verifier | 8050 | Solidity 编译器验证 | 访问:`http://localhost:4000` ### 2.6 启动监控栈(可选) ```bash cd blockchain/chain-monitor/ docker compose -f docker-compose.monitor.yml up -d ``` | 服务 | 端口 | 说明 | |------|------|------| | Prometheus | 9090 | 指标采集(90 天保留) | | Grafana | 3030 | 可视化仪表板(密码:`genex_admin_2024`) | | AlertManager | 9093 | 告警管理 | | Node Exporter | 9100 | 主机指标 | ### 2.7 启动管理后台前端 ```bash cd frontend/admin-web/ docker compose up -d ``` 访问:`http://localhost:3000` ### 2.8 运行端到端测试 ```bash cd backend/ ./scripts/run-e2e.sh ``` 测试覆盖:认证流程 → 用户资料 → 钱包操作 → 券搜索 → 消息 → 交易撮合 → AI 对话 → 管理后台(仪表板、用户、发行方、财务、风控、合规)。 Base URL:`http://localhost:8080`(Kong 网关)。 --- ## 3. 单独编译各组件 ### 3.1 NestJS 后端服务 ```bash cd backend/services// npm ci npm run build # 编译到 dist/ npm run start:dev # 开发模式(热重载) npm run start:prod # 生产模式 npm run test # 单元测试 npm run test:e2e # E2E 测试 ``` 适用于:auth-service、user-service、issuer-service、clearing-service、compliance-service、ai-service、notification-service、telemetry-service、admin-service。 ### 3.2 Go 后端服务 ```bash cd backend/services// go build -o . # 生产构建(静态链接、去符号表) CGO_ENABLED=0 go build -ldflags="-s -w" -o . ``` 适用于:trading-service、translate-service、chain-indexer。 ### 3.3 Genex 区块链节点 ```bash cd blockchain/genex-chain/ make build # 输出: build/genexd make install # 安装到 $GOPATH/bin make test # 运行测试(-race -count=1) make lint # golangci-lint 代码检查 make format # gofmt 格式化 # 本地单节点测试网 make init-local # 初始化(6 步:构建→清理→初始化→创建账户→配置创世→启动) make start # 启动节点 # Docker make docker # 构建 Docker 镜像 make docker-run # 运行容器 make docker-stop # 停止容器 ``` 构建参数:`CGO_ENABLED=1`(Cosmos SDK 加密库要求)。 ### 3.4 智能合约(Foundry) ```bash cd blockchain/genex-contracts/ forge build # 编译合约 forge build --sizes # 编译 + 显示合约大小(上限 24KB) forge test -vvv # 运行 102 个测试 forge test -vvv --gas-report # 运行测试 + Gas 报告 ``` 合约:9 个核心合约,Solidity 0.8.20。 ### 3.5 Flutter 移动端 ```bash cd frontend/ # 消费端 App ./build.sh mobile debug # Debug APK ./build.sh mobile release # Release APK ./build.sh mobile release appbundle # Google Play AAB ./build.sh mobile clean # 清理 # 管理端 App ./build.sh admin-app debug ./build.sh admin-app release appbundle # 全部构建 ./build.sh all release ``` ### 3.6 管理后台 Next.js ```bash cd frontend/admin-web/ npm ci npm run build # Next.js 15 生产构建 npm run dev # 开发模式 npm run start # 生产启动 npm run lint # 代码检查 ``` ### 3.7 小程序 (Taro) ```bash cd frontend/miniapp/ npm ci npm run dev:weapp # 微信小程序开发模式 npm run build:weapp # 微信小程序生产构建 npm run dev:h5 # H5 开发模式 npm run build:h5 # H5 生产构建 ``` --- ## 4. Docker 镜像构建 所有服务均采用**多阶段构建**以减小镜像体积。 ### 4.1 NestJS 服务镜像 ```dockerfile # 构建阶段 FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 FROM node:20-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json . USER node CMD ["dumb-init", "node", "dist/main"] ``` ### 4.2 Go 服务镜像 ```dockerfile # 构建阶段 FROM golang:1.22-alpine AS builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o service . # 运行阶段 FROM alpine:3.19 COPY --from=builder /app/service /usr/local/bin/ USER nobody:nobody CMD ["service"] ``` ### 4.3 Genex Chain 镜像 ```dockerfile FROM golang:1.23-alpine AS builder # CGO_ENABLED=1(Cosmos SDK 加密库需要) # ldflags 注入: Name, AppName, Version, Commit, BuildTags FROM alpine:3.19 USER genex:genex EXPOSE 26656 26657 8545 8546 1317 9090 9091 HEALTHCHECK CMD curl -f http://localhost:26657/status || exit 1 ``` ### 4.4 Admin Web 镜像 ```dockerfile FROM node:20-alpine AS deps # npm ci FROM node:20-alpine AS builder # npm run build FROM node:20-alpine AS runner # node server.js ``` --- ## 5. 生产部署 ### 5.1 Admin Web + Nginx + SSL ```bash cd frontend/admin-web/ # Docker 容器管理 ./deploy.sh build # 构建镜像 ./deploy.sh start # 构建并启动(默认) ./deploy.sh stop # 停止服务 ./deploy.sh restart # 重启 ./deploy.sh logs # 查看日志 ./deploy.sh status # 服务状态 ./deploy.sh clean # 移除容器和镜像 # Nginx + Let's Encrypt SSL sudo ./deploy.sh nginx install # 安装 Nginx + 申请证书 sudo ./deploy.sh nginx ssl # 申请/续期证书 ./deploy.sh nginx status # 检查 Nginx 状态 ./deploy.sh nginx reload # 重载配置 ``` 默认域名:`admin.gogenex.cn`,健康检查:`http://localhost:3000/api/health`。 ### 5.2 安全加固要点 | 措施 | 说明 | |------|------| | 端口绑定 | PG、Redis、Kafka Connect、Kong Admin、MinIO Console 仅绑定 `127.0.0.1` | | 非 root 用户 | 容器内使用 `node` / `nobody` / `genex` 用户 | | 优雅关闭 | NestJS 服务使用 `dumb-init` | | WAL 管理 | `max_slot_wal_keep_size=10GB` 防止复制槽磁盘溢出 | | 网关隔离 | 仅 Kong Proxy 端口(8080) 对外暴露 | ### 5.3 环境变量配置 参考 `backend/.env.example`,以下为核心配置项: ```bash # ---- 数据库 ---- DB_HOST=postgres DB_PORT=5432 DB_USERNAME=genex DB_PASSWORD=genex_dev_password # 生产环境必须修改 DB_NAME=genex # ---- Redis ---- REDIS_HOST=redis REDIS_PORT=6379 # ---- Kafka ---- KAFKA_BROKERS=kafka:9092 # ---- JWT(生产环境必须修改) ---- JWT_ACCESS_SECRET=dev-access-secret-change-in-production JWT_ACCESS_EXPIRY=15m JWT_REFRESH_SECRET=dev-refresh-secret-change-in-production JWT_REFRESH_EXPIRY=7d # ---- Kong ---- KONG_ADMIN_URL=http://kong:8001 KONG_PROXY_PORT=8080 # ---- MinIO ---- MINIO_ENDPOINT=minio MINIO_PORT=9000 MINIO_ACCESS_KEY=genex-admin MINIO_SECRET_KEY=genex-minio-secret # 生产环境必须修改 # ---- AI 服务 ---- AI_SERVICE_URL=http://ai-agent-cluster:3006 AI_SERVICE_API_KEY=your-ai-service-api-key AI_SERVICE_TIMEOUT=30000 # ---- 区块链 ---- CHAIN_RPC_URL=http://localhost:26657 # ---- 外部服务(MVP 阶段 Mock) ---- SENDGRID_API_KEY=mock-key TWILIO_SID=mock-sid TWILIO_AUTH_TOKEN=mock-token CHAINALYSIS_API_KEY=mock-key ``` --- ## 6. 基础设施配置 ### 6.1 Kong API 网关路由表 配置文件:`backend/kong/kong.yml`(YAML 3.0 声明式) | 服务 | 上游端口 | 路由前缀 | |------|----------|----------| | auth-service | 3010 | `/api/v1/auth` | | user-service | 3001 | `/api/v1/users`、`/api/v1/wallet`、`/api/v1/messages`、`/api/v1/admin/users` | | issuer-service | 3002 | `/api/v1/coupons`、`/api/v1/issuers`、`/api/v1/admin/issuers`、`/api/v1/admin/coupons` | | trading-service | 3003 | `/api/v1/trades`、`/api/v1/mm`、`/api/v1/admin/trading` | | clearing-service | 3004 | `/api/v1/payments`、`/api/v1/admin/finance` | | compliance-service | 3005 | `/api/v1/compliance`、`/api/v1/disputes` | | ai-service | 3006 | `/api/v1/ai` | | translate-service | 3007 | `/api/v1/translate` | | notification-service | 3008 | `/api/v1/notifications`、`/api/v1/admin/notifications` | | chain-indexer | 3009 | `/api/v1/blockchain` | | telemetry-service | 3011 | `/api/v1/telemetry`、`/api/v1/admin/telemetry` | | admin-service | 3012 | `/api/v1/app/version`、`/api/v1/admin/versions` | 所有路由配置 `strip_path: false`。 ### 6.2 健康检查 | 服务 | 检查方式 | 间隔 | |------|----------|------| | PostgreSQL | `pg_isready` | 5s | | Redis | `redis-cli ping` | 5s | | Kafka | `kafka-broker-api-versions` | 10s | | MinIO | `mc ready local` | 10s | | Kong | `kong health` | 10s | | Genex Chain | `curl /status` | 30s | | Blockscout | `GET /api/v2/stats` | 30s(启动宽限 120s) | --- ## 7. 端口总览 | 服务 | 端口 | 对外绑定 | 说明 | |------|------|----------|------| | **Kong Proxy** | 8080 | `0.0.0.0` | API 统一入口 | | Kong Admin | 8001 | `127.0.0.1` | 网关管理 | | PostgreSQL | 5432 | `127.0.0.1` | 数据库 | | Redis | 6379 | `127.0.0.1` | 缓存 | | Kafka | 9092 | `0.0.0.0` | 消息队列 | | Kafka External | 29092 | `127.0.0.1` | 外部客户端 | | MinIO S3 | 9000 | `0.0.0.0` | 对象存储 | | MinIO Console | 9001 | `127.0.0.1` | MinIO 管理界面 | | Kafka Connect | 8083 | `127.0.0.1` | CDC 连接器 | | **Genex Chain RPC** | 26657 | `0.0.0.0` | CometBFT RPC | | Genex Chain P2P | 26656 | `0.0.0.0` | 节点发现 | | **Genex EVM RPC** | 8545 | `0.0.0.0` | EVM JSON-RPC | | Genex EVM WS | 8546 | `0.0.0.0` | EVM WebSocket | | Cosmos REST | 1317 | `0.0.0.0` | Cosmos LCD | | Cosmos gRPC | 9090 | `0.0.0.0` | Cosmos gRPC | | **Blockscout** | 4000 | `0.0.0.0` | 区块浏览器 | | Contract Verifier | 8050 | — | 合约验证 | | **Prometheus** | 9090 | `0.0.0.0` | 指标采集 | | **Grafana** | 3030 | `0.0.0.0` | 监控仪表板 | | AlertManager | 9093 | `0.0.0.0` | 告警 | | Node Exporter | 9100 | `0.0.0.0` | 主机指标 | | **Admin Web** | 3000 | `0.0.0.0` | 管理后台前端 | | Enterprise API | 3020 | `0.0.0.0` | 企业级 API | | Wallet Service | 3021 | `0.0.0.0` | 钱包服务 | | Gas Relayer | 3022 | `0.0.0.0` | Gas 代付 | | Faucet | 3023 | `0.0.0.0` | 测试网水龙头 | | Bridge Monitor | 3024 | `0.0.0.0` | 跨链监控 | --- ## 8. CI/CD 管线 ### 8.1 智能合约安全管线 文件:`blockchain/.github/workflows/contract-security.yml` 触发条件:`blockchain/genex-contracts/**` 文件变更 ``` ┌─────────────────┐ ┌─────────────────────┐ ┌────────────────────────┐ │ Foundry Tests │────▶│ Slither 静态分析 │────▶│ Mythril 符号执行 │ │ forge test -vvv │ │ 中等以上 severity │ │ timeout=300s depth=24 │ │ + Gas Report │ │ 输出 SARIF │ │ 输出 JSON │ │ + Size Check │ │ │ │ │ └─────────────────┘ └─────────────────────┘ └────────────────────────┘ │ ▼ (main branch only) ┌────────────────────────┐ │ Blockscout 合约验证 │ │ forge verify │ └────────────────────────┘ ``` ### 8.2 区块链 CI 管线 文件:`blockchain/.github/workflows/chain-ci.yml` 触发条件:`blockchain/` 下 Go 相关文件变更 ``` ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ genexd 构建 │ │ Go SDK 测试 │ │ Bridge Monitor │ │ make build │ │ go test ./... │ │ go test ./... │ │ go test -race │ │ │ │ │ │ golangci-lint │ │ │ │ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ ┌─────────────────────────────────────────┐ ┌──────────────────┐ │ Ecosystem Services Build (matrix) │ │ Dart SDK 测试 │ │ enterprise-api / gas-relayer / faucet │ │ dart analyze │ │ npm ci → npm run build → npm run lint │ │ dart test │ └─────────────────────────────────────────┘ └──────────────────┘ ``` --- ## 9. deploy.sh 部署管理脚本 每个模块都配备了 `deploy.sh` 脚本,提供统一的服务管理接口(启动、停止、重启、编译、健康检查等),所有服务在总 `docker-compose.yml` + `.env` 下有序工作。 ### 9.1 后端主控脚本 — `backend/deploy.sh` ```bash # 首次初始化(自动生成安全密钥 + .env) ./deploy.sh install # 全局操作 ./deploy.sh up # 启动全部 (基础设施 + 12个微服务) ./deploy.sh down # 停止全部 ./deploy.sh restart # 重启全部 ./deploy.sh build # 增量编译全部镜像 ./deploy.sh build-no-cache # 全新编译 (无缓存) ./deploy.sh status # 状态 + 健康检查 ./deploy.sh health # 仅健康检查 ./deploy.sh logs [svc] # 日志 (可指定服务) ./deploy.sh migrate # 数据库迁移 # 基础设施单独控制 ./deploy.sh infra-up # 仅启动 PG/Redis/Kafka/MinIO/Kong ./deploy.sh infra-down ./deploy.sh infra-restart ./deploy.sh infra-status ./deploy.sh infra-logs ./deploy.sh infra-clean # 清理 (删除数据!) ./deploy.sh infra-reset # 重置 (clean + 重启) # 单服务操作 ./deploy.sh start-svc auth-service ./deploy.sh stop-svc auth-service ./deploy.sh restart-svc auth-service ./deploy.sh rebuild-svc auth-service # 增量编译并重启 ./deploy.sh rebuild-svc auth-service --no-cache # 全新编译并重启 ./deploy.sh logs-svc auth-service ``` ### 9.2 各服务独立脚本 — `backend/services//deploy.sh` 每个微服务目录下都有独立的 `deploy.sh`,支持以下命令: ```bash cd backend/services/auth-service/ ./deploy.sh build # 增量编译 ./deploy.sh build-no-cache # 全新编译 (无缓存) ./deploy.sh start # 启动 ./deploy.sh stop # 停止 ./deploy.sh restart # 重启 ./deploy.sh rebuild # 增量编译并重启 ./deploy.sh rebuild-no-cache # 全新编译并重启 ./deploy.sh logs # 实时日志 ./deploy.sh logs-tail # 最近 100 行 ./deploy.sh status # 运行状态 ./deploy.sh health # 健康检查 ./deploy.sh shell # 进入容器 ./deploy.sh test # 运行测试 (NestJS: npm test / Go: go test) ``` | 服务 | 路径 | 端口 | 类型 | |------|------|------|------| | auth-service | `backend/services/auth-service/deploy.sh` | 3010 | NestJS | | user-service | `backend/services/user-service/deploy.sh` | 3001 | NestJS | | issuer-service | `backend/services/issuer-service/deploy.sh` | 3002 | NestJS | | trading-service | `backend/services/trading-service/deploy.sh` | 3003 | Go | | clearing-service | `backend/services/clearing-service/deploy.sh` | 3004 | NestJS | | compliance-service | `backend/services/compliance-service/deploy.sh` | 3005 | NestJS | | ai-service | `backend/services/ai-service/deploy.sh` | 3006 | NestJS | | translate-service | `backend/services/translate-service/deploy.sh` | 3007 | Go | | notification-service | `backend/services/notification-service/deploy.sh` | 3008 | NestJS | | chain-indexer | `backend/services/chain-indexer/deploy.sh` | 3009 | Go | | telemetry-service | `backend/services/telemetry-service/deploy.sh` | 3011 | NestJS | | admin-service | `backend/services/admin-service/deploy.sh` | 3012 | NestJS | ### 9.3 区块链脚本 — `blockchain/deploy.sh` ```bash # 节点管理 ./deploy.sh up # 启动全部节点 (3创世+2机构+1监管) ./deploy.sh down # 停止 ./deploy.sh restart # 重启 ./deploy.sh dev # 单节点开发模式 (仅 node-1) ./deploy.sh build # 增量编译 ./deploy.sh build-no-cache # 全新编译 ./deploy.sh status # 状态 + 健康 ./deploy.sh health # 健康检查 # 生态服务 ./deploy.sh eco-up # Enterprise API / Gas Relayer / Faucet / Bridge / Archive ./deploy.sh eco-down ./deploy.sh eco-status ./deploy.sh eco-build ./deploy.sh eco-build-no-cache # 智能合约 ./deploy.sh deploy-contracts # 部署合约 ./deploy.sh test-contracts # Foundry 测试 # 区块浏览器 ./deploy.sh explorer-up # 启动 Blockscout (:4000) ./deploy.sh explorer-down # 链监控 ./deploy.sh monitor-up # Prometheus(:9090) + Grafana(:3030) ./deploy.sh monitor-down # 单服务 ./deploy.sh rebuild-svc genex-node-1 --no-cache ``` ### 9.4 编译策略说明 | 命令 | 策略 | 场景 | |------|------|------| | `build` | 增量编译 | 日常开发,利用 Docker 层缓存,速度快 | | `build-no-cache` | 全新编译 | 依赖变更、Dockerfile 修改后,跳过所有缓存 | | `rebuild` | 增量编译 + 自动重启 | 修改代码后快速更新 | | `rebuild-no-cache` | 全新编译 + 自动重启 | 确保干净环境 | --- ## 附录:快速参考 ```bash # === 全栈本地启动(deploy.sh 方式,推荐) === cd backend && ./deploy.sh install && ./deploy.sh build && ./deploy.sh up cd blockchain && ./deploy.sh build && ./deploy.sh up cd frontend/admin-web && docker compose up -d # === 验证 === cd backend && ./deploy.sh health cd blockchain && ./deploy.sh health curl http://localhost:3000 # 管理后台页面 # === 单服务热更新 === cd backend && ./deploy.sh rebuild-svc auth-service # 增量 cd backend && ./deploy.sh rebuild-svc trading-service --no-cache # 全新 # === 停止 === cd backend && ./deploy.sh down cd blockchain && ./deploy.sh down cd frontend/admin-web && docker compose down ```