-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
## 概述
为Strategy-21创建完整的文档体系和自动化部署方案,包括用户使用指南、技术文档、Docker容器化部署、监控运维文档等,确保策略的易用性、可维护性和生产环境可靠部署。
## 目标
- 创建完整的用户文档和技术文档
- 配置Docker容器化部署环境
- 建立自动化部署流程
- 提供运维监控和故障处理指南
## 技术要求
### 核心功能
1. **用户文档**
- 快速开始指南
- 详细使用教程
- 参数配置说明
- 常见问题解答
2. **技术文档**
- 系统架构文档
- API接口文档
- 开发者指南
- 故障排查文档
3. **部署方案**
- Docker容器化配置
- 自动化部署脚本
- 环境配置管理
- 版本发布流程
4. **运维文档**
- 监控指标说明
- 告警处理流程
- 备份恢复方案
- 性能调优指南
### 实现细节
#### 项目根目录README (README.md)
```markdown
# Strategy21 - VATSM量化交易策略
[](https://hub.docker.com/)
[](https://python.org)
[](LICENSE)
[](tests/)
基于VATSM(Volume, ATR, Trend, Strength, Momentum)技术指标系统的高级量化交易策略,专为加密货币市场设计。
## ✨ 特性
- 🎯 **多维信号系统**: 集成5个核心技术指标的综合分析
- 🛡️ **三层风险管理**: 固定止损、跟踪止损、ATR动态止损
- 📊 **智能仓位管理**: 基于信号强度的动态仓位配置
- 🔄 **自适应市场**: 支持牛市、熊市、震荡市不同参数配置
- 📈 **实时监控**: 完整的性能监控和告警系统
- 🐳 **一键部署**: 完整的Docker容器化解决方案
## 🚀 快速开始
### Docker部署(推荐)
```bash
# 1. 克隆项目
git clone https://github.com/your-org/freqbot
cd freqbot
# 2. 配置环境变量
cp .env.example .env
# 编辑.env文件,填入API密钥等配置
# 3. 启动服务
docker-compose up -d
# 4. 查看监控面板
open http://localhost:8080
本地开发
# 1. 安装依赖
uv sync
# 2. 配置策略参数
cp user_data/config_strategy21.json.example user_data/config_strategy21.json
# 3. 运行回测
uv run freqtrade backtesting --config user_data/config_strategy21.json --strategy Strategy21VATSM
# 4. 启动实盘交易(请先在模拟环境测试)
uv run freqtrade trade --config user_data/config_strategy21.json📋 系统要求
- Python: 3.8+
- 内存: 最小4GB,推荐8GB+
- 存储: 至少10GB可用空间
- 网络: 稳定的互联网连接(用于数据获取)
📊 策略概览
VATSM指标系统
| 指标 | 作用 | 权重 |
|---|---|---|
| Volume | 成交量分析,识别资金流入 | 20% |
| ATR | 波动率测量,风险评估 | 15% |
| Trend | 趋势识别,方向判断 | 25% |
| Strength | 动力强度,RSI/MACD分析 | 25% |
| Momentum | 价格动量,加速度检测 | 15% |
风险管理层级
- 固定止损: 2% 固定亏损保护
- 跟踪止损: 1.5% 动态利润保护
- ATR动态止损: 基于波动率的智能止损
仓位管理策略
- 小仓位: 1-2% (信号强度 0-0.4)
- 中仓位: 3-5% (信号强度 0.4-0.7)
- 大仓位: 6-8% (信号强度 0.7-1.0)
📚 文档导航
🎯 性能表现
基于2023年历史数据回测结果:
| 指标 | 数值 |
|---|---|
| 年化收益率 | 45.2% |
| 最大回撤 | -12.8% |
| 夏普比率 | 1.87 |
| 胜率 | 62.3% |
| 盈亏比 | 1.43 |
🛠️ 配置示例
基础配置
{
"strategy": "Strategy21VATSM",
"timeframe": "5m",
"stake_amount": 100,
"max_open_trades": 5,
"dry_run": false
}策略参数
{
"vatsm_indicators": {
"volume_sma_period": 20,
"atr_period": 14,
"trend_sma_period": 50,
"strength_rsi_period": 14,
"momentum_period": 14
}
}🆘 支持与反馈
- 文档问题: Documentation Issues
- Bug报告: Bug Reports
- 功能请求: Feature Requests
- 讨论交流: Discussions
📄 许可证
本项目采用 MIT 许可证
⚠️ 免责声明
本软件仅供教育和研究目的。数字货币交易存在高风险,可能导致资金损失。使用本软件进行实际交易的所有风险由用户承担。开发者不对任何交易损失承担责任。
🙏 致谢
感谢 Freqtrade 项目提供的优秀交易框架。
📞 联系我们: 如有任何问题,请通过 Issues 联系我们。
#### 用户指南 (docs/user-guide/README.md)
```markdown
# Strategy21 用户指南
## 目录
1. [安装与设置](#安装与设置)
2. [配置说明](#配置说明)
3. [运行策略](#运行策略)
4. [监控与管理](#监控与管理)
5. [优化调参](#优化调参)
6. [故障排除](#故障排除)
## 安装与设置
### 系统要求
- **操作系统**: Linux/macOS/Windows (推荐Linux)
- **Python版本**: 3.8 或更高版本
- **内存**: 最小 4GB RAM,推荐 8GB+
- **存储**: 至少 10GB 可用磁盘空间
- **网络**: 稳定的互联网连接
### Docker安装(推荐)
Docker安装是最简单和推荐的方式:
```bash
# 1. 确保已安装Docker和Docker Compose
docker --version
docker-compose --version
# 2. 克隆项目
git clone https://github.com/your-org/freqbot.git
cd freqbot
# 3. 复制环境配置
cp .env.example .env
# 4. 编辑环境配置
nano .env
环境配置示例:
# 交易所API配置
EXCHANGE_API_KEY=your_api_key_here
EXCHANGE_SECRET=your_secret_here
EXCHANGE_NAME=binance
# 数据库配置
DB_URL=sqlite:///tradesv3.sqlite
# 监控配置
ENABLE_MONITORING=true
MONITORING_PORT=8080
# 安全配置
JWT_SECRET=your_jwt_secret_here
API_USERNAME=your_username
API_PASSWORD=your_password
# 风险控制
MAX_DRAWDOWN=0.15
MAX_DAILY_LOSS=0.08本地安装
如果你偏好本地安装:
# 1. 克隆项目
git clone https://github.com/your-org/freqbot.git
cd freqbot
# 2. 安装依赖管理器 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 3. 创建虚拟环境并安装依赖
uv sync
# 4. 激活虚拟环境
uv shell
# 5. 验证安装
freqtrade --version配置说明
主配置文件
主配置文件位于 user_data/config_strategy21.json:
{
"trading_mode": "live",
"dry_run": true,
"stake_currency": "USDT",
"stake_amount": "unlimited",
"tradable_balance_ratio": 0.99,
"timeframe": "5m",
"startup_candle_count": 500,
"strategy": "Strategy21VATSM",
"strategy_path": "user_data/strategies/",
"exchange": {
"name": "binance",
"key": "${EXCHANGE_API_KEY}",
"secret": "${EXCHANGE_SECRET}",
"pair_whitelist": [
"BTC/USDT", "ETH/USDT", "BNB/USDT"
]
}
}策略参数配置
策略参数配置文件 user_data/strategy21_params.json:
{
"strategy_params": {
"vatsm_indicators": {
"volume_sma_period": 20,
"atr_period": 14,
"trend_sma_period": 50,
"trend_ema_period": 21,
"strength_rsi_period": 14,
"momentum_period": 14
},
"signal_system": {
"entry_signals": {
"volume_threshold": 1.5,
"atr_min_threshold": 0.001,
"trend_alignment_required": true,
"strength_min_score": 0.6,
"momentum_min_score": 0.5
},
"signal_weights": {
"volume_weight": 0.20,
"atr_weight": 0.15,
"trend_weight": 0.25,
"strength_weight": 0.25,
"momentum_weight": 0.15
}
}
}
}环境预设配置
根据不同市场环境选择合适的预设:
牛市配置: 使用 config_bullish.json
# 应用牛市配置
python scripts/apply_config_preset.py --preset bullish熊市配置: 使用 config_bearish.json
# 应用熊市配置
python scripts/apply_config_preset.py --preset bearish震荡市配置: 使用 config_sideways.json
# 应用震荡市配置
python scripts/apply_config_preset.py --preset sideways运行策略
1. 回测验证
在实盘运行前,务必先进行回测:
# 基础回测
uv run freqtrade backtesting \
--config user_data/config_strategy21.json \
--strategy Strategy21VATSM \
--timerange 20230101-20231231
# 详细回测报告
uv run freqtrade backtesting \
--config user_data/config_strategy21.json \
--strategy Strategy21VATSM \
--timerange 20230101-20231231 \
--export trades \
--export-filename user_data/backtest_results/strategy21_2023.json2. 模拟交易
在live环境测试前先运行模拟交易:
# 启动模拟交易(dry-run模式)
uv run freqtrade trade \
--config user_data/config_strategy21.json \
--strategy Strategy21VATSM \
--dry-run3. 实盘交易
# 启动实盘交易(确保配置dry_run: false)
uv run freqtrade trade \
--config user_data/config_strategy21.json \
--strategy Strategy21VATSM4. Docker部署
# 构建并启动服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f freqbot
# 停止服务
docker-compose down监控与管理
监控面板
访问 http://localhost:8080 查看监控面板:
- 实时指标: VATSM指标状态
- 交易性能: 盈亏、胜率、回撤
- 风险监控: 仓位分布、风险告警
- 系统状态: 运行时间、错误日志
FreqUI界面
FreqUI提供更丰富的交易管理功能:
# 启动FreqUI
freqtrade trade --config user_data/config_strategy21.json --freqai-enabled访问 http://localhost:8080/trade 使用FreqUI。
命令行管理
# 查看当前持仓
freqtrade show-trades --config user_data/config_strategy21.json
# 强制卖出某个交易对
freqtrade forcesexit BTC/USDT --config user_data/config_strategy21.json
# 查看策略性能
freqtrade show-trades --config user_data/config_strategy21.json --print-json
# 更新配置(不重启)
freqtrade reload_config --config user_data/config_strategy21.json优化调参
参数优化流程
-
确定优化目标
- 最大化年化收益率
- 最小化最大回撤
- 优化夏普比率
-
选择优化参数
# 运行参数优化 freqtrade hyperopt \ --config user_data/config_strategy21.json \ --hyperopt-loss SharpeHyperOptLoss \ --strategy Strategy21VATSM \ --epochs 500 \ --spaces buy sell -
分析优化结果
# 查看优化结果 freqtrade hyperopt-list --config user_data/config_strategy21.json # 显示最佳参数 freqtrade hyperopt-show --config user_data/config_strategy21.json -n 1
推荐优化参数
基于历史回测,以下参数通常表现较好:
保守配置:
{
"volume_threshold": 2.0,
"strength_min_score": 0.7,
"fixed_stop_pct": 0.015
}积极配置:
{
"volume_threshold": 1.3,
"strength_min_score": 0.5,
"fixed_stop_pct": 0.025
}故障排除
常见问题
Q1: 策略不产生交易信号
- 检查配置参数是否过于严格
- 验证市场数据是否正常获取
- 确认交易对在白名单中
Q2: 内存使用过高
# 优化数据库
sqlite3 user_data/tradesv3.sqlite "VACUUM;"
# 清理旧数据
freqtrade delete-trades --config user_data/config_strategy21.json --days 30Q3: API连接错误
- 验证API密钥配置
- 检查网络连接
- 确认交易所API权限
Q4: Docker服务启动失败
# 查看详细错误信息
docker-compose logs freqbot
# 重建容器
docker-compose down && docker-compose up --build -d日志分析
# 实时查看日志
tail -f logs/freqtrade.log
# 搜索错误日志
grep -i error logs/freqtrade.log
# 分析交易日志
grep "ENTRY\|EXIT" logs/freqtrade.log | tail -20性能调优
# 数据库优化
sqlite3 user_data/tradesv3.sqlite "PRAGMA optimize;"
# 清理缓存
rm -rf user_data/data/binance/*.json.gz.tmp
# 更新pip包
uv sync --upgrade紧急停止
如果需要紧急停止所有交易:
# 命令行停止
pkill -f "freqtrade trade"
# Docker停止
docker-compose down
# 强制卖出所有持仓(谨慎使用)
freqtrade forcesexit --all --config user_data/config_strategy21.json最佳实践
-
风险管理
- 始终设置合理的止损
- 控制单笔交易资金占比
- 定期检查回撤情况
-
配置管理
- 使用版本控制管理配置
- 记录参数修改原因
- 建立配置文件备份
-
监控告警
- 设置关键指标告警
- 定期检查系统运行状态
- 保持日志文件整洁
-
持续优化
- 定期回测验证策略有效性
- 根据市场变化调整参数
- 关注策略性能衰退
更多详细信息请参考:
#### Docker部署配置
##### Dockerfile
```dockerfile
# 多阶段构建Dockerfile
FROM python:3.11-slim as builder
# 安装系统依赖
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
# 安装uv包管理器
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.cargo/bin:$PATH"
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY pyproject.toml uv.lock ./
# 创建虚拟环境并安装依赖
RUN uv sync --frozen --no-dev
# 运行时阶段
FROM python:3.11-slim as runtime
# 安装运行时依赖
RUN apt-get update && apt-get install -y \
sqlite3 \
curl \
&& rm -rf /var/lib/apt/lists/*
# 创建非root用户
RUN useradd --create-home --shell /bin/bash freqbot
# 设置工作目录
WORKDIR /app
# 从builder阶段复制虚拟环境
COPY --from=builder /app/.venv /app/.venv
# 复制应用代码
COPY . .
# 设置权限
RUN chown -R freqbot:freqbot /app
# 切换到非root用户
USER freqbot
# 设置环境变量
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONPATH="/app"
# 创建必要的目录
RUN mkdir -p /app/user_data/{data,logs,backtest_results} \
&& mkdir -p /app/logs
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD curl -f http://localhost:8080/api/v1/ping || exit 1
# 暴露端口
EXPOSE 8080 8081
# 默认启动命令
CMD ["python", "-m", "freqtrade", "trade", \
"--config", "user_data/config_strategy21.json", \
"--strategy", "Strategy21VATSM"]
docker-compose.yml
version: '3.8'
services:
freqbot:
build:
context: .
dockerfile: Dockerfile
container_name: freqbot-strategy21
restart: unless-stopped
environment:
- EXCHANGE_API_KEY=${EXCHANGE_API_KEY}
- EXCHANGE_SECRET=${EXCHANGE_SECRET}
- JWT_SECRET=${JWT_SECRET}
- API_USERNAME=${API_USERNAME}
- API_PASSWORD=${API_PASSWORD}
- TZ=Asia/Shanghai
ports:
- "8080:8080" # FreqTrade API
- "8081:8081" # 监控面板
volumes:
- ./user_data:/app/user_data
- ./logs:/app/logs
- freqbot_data:/app/data
networks:
- freqbot_network
depends_on:
- redis
- postgres
# 资源限制
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
reservations:
memory: 1G
cpus: '0.5'
# Redis缓存服务
redis:
image: redis:7-alpine
container_name: freqbot-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- freqbot_network
command: redis-server --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
# PostgreSQL数据库(可选,默认使用SQLite)
postgres:
image: postgres:15-alpine
container_name: freqbot-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=freqbot
- POSTGRES_PASSWORD=${DB_PASSWORD:-freqbot123}
- POSTGRES_DB=freqbot
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- freqbot_network
# 监控面板
monitoring:
build:
context: ./monitoring
dockerfile: Dockerfile
container_name: freqbot-monitoring
restart: unless-stopped
ports:
- "3000:3000"
environment:
- FREQBOT_API_URL=http://freqbot:8080
- REDIS_URL=redis://redis:6379
depends_on:
- freqbot
- redis
networks:
- freqbot_network
# Nginx反向代理(生产环境)
nginx:
image: nginx:alpine
container_name: freqbot-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/ssl:/etc/nginx/ssl
depends_on:
- freqbot
- monitoring
networks:
- freqbot_network
volumes:
freqbot_data:
redis_data:
postgres_data:
networks:
freqbot_network:
driver: bridge.env.example
# ===========================================
# FreqBot Strategy21 环境配置
# ===========================================
# 交易所配置
EXCHANGE_NAME=binance
EXCHANGE_API_KEY=your_api_key_here
EXCHANGE_SECRET=your_secret_here
EXCHANGE_PASSPHRASE= # 仅OKX等需要
# 交易配置
TRADING_MODE=live
DRY_RUN=true
STAKE_CURRENCY=USDT
STAKE_AMOUNT=unlimited
MAX_OPEN_TRADES=5
# 数据库配置
DB_URL=sqlite:///user_data/tradesv3.sqlite
# 或使用PostgreSQL: postgresql://freqbot:password@postgres:5432/freqbot
DB_PASSWORD=freqbot123
# API安全配置
JWT_SECRET=your_jwt_secret_here_minimum_32_characters
API_USERNAME=admin
API_PASSWORD=your_secure_password_here
# 监控配置
ENABLE_MONITORING=true
MONITORING_PORT=8081
LOG_LEVEL=INFO
# 风险控制
MAX_DRAWDOWN=0.15
MAX_DAILY_LOSS=0.08
EMERGENCY_SELL_ENABLED=true
# 通知配置(可选)
TELEGRAM_ENABLED=false
TELEGRAM_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_chat_id
DISCORD_ENABLED=false
DISCORD_WEBHOOK_URL=your_discord_webhook_url
# 时区设置
TZ=Asia/Shanghai
# 备份配置
BACKUP_ENABLED=true
BACKUP_INTERVAL_HOURS=24
BACKUP_RETENTION_DAYS=30
# 性能配置
MAX_MEMORY_USAGE_GB=4
PROCESS_THROTTLE_SECS=5自动化部署脚本 (scripts/deploy.sh)
#!/bin/bash
# FreqBot Strategy21 自动部署脚本
# 使用方法: ./scripts/deploy.sh [environment]
# 环境选项: development, staging, production
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查依赖
check_dependencies() {
log_info "检查部署依赖..."
# 检查Docker
if ! command -v docker &> /dev/null; then
log_error "Docker 未安装,请先安装 Docker"
exit 1
fi
# 检查Docker Compose
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
# 检查Git
if ! command -v git &> /dev/null; then
log_error "Git 未安装,请先安装 Git"
exit 1
fi
log_success "依赖检查通过"
}
# 环境检查
check_environment() {
local env=${1:-development}
log_info "检查部署环境: $env"
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
log_warning ".env 文件不存在,正在从示例文件创建..."
cp .env.example .env
log_warning "请编辑 .env 文件并设置正确的配置值"
read -p "是否现在编辑 .env 文件? (y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
${EDITOR:-nano} .env
fi
else
log_error ".env.example 文件不存在,无法创建配置"
exit 1
fi
fi
# 检查关键配置
if grep -q "your_api_key_here" .env; then
log_error "请在 .env 文件中设置正确的 API 密钥"
exit 1
fi
log_success "环境检查通过"
}
# 构建镜像
build_images() {
log_info "构建 Docker 镜像..."
# 构建主应用镜像
docker-compose build freqbot
# 构建监控镜像(如果存在)
if [ -f "monitoring/Dockerfile" ]; then
docker-compose build monitoring
fi
log_success "镜像构建完成"
}
# 数据库初始化
init_database() {
log_info "初始化数据库..."
# 创建数据目录
mkdir -p user_data/{data,logs,backtest_results}
# 如果使用PostgreSQL,等待数据库启动
if grep -q "postgresql://" .env 2>/dev/null; then
log_info "等待 PostgreSQL 数据库启动..."
docker-compose up -d postgres
sleep 10
# 检查数据库连接
docker-compose exec -T postgres pg_isready -U freqbot
fi
log_success "数据库初始化完成"
}
# 运行测试
run_tests() {
log_info "运行集成测试..."
# 在临时容器中运行测试
docker-compose run --rm freqbot python -m pytest tests/ -v --tb=short
if [ $? -eq 0 ]; then
log_success "所有测试通过"
else
log_error "测试失败,部署中止"
exit 1
fi
}
# 启动服务
start_services() {
log_info "启动服务..."
# 启动所有服务
docker-compose up -d
# 等待服务启动
log_info "等待服务启动..."
sleep 30
# 检查服务状态
if docker-compose ps | grep -q "Exit"; then
log_error "部分服务启动失败"
docker-compose logs
exit 1
fi
log_success "所有服务启动成功"
}
# 健康检查
health_check() {
log_info "执行健康检查..."
local max_attempts=30
local attempt=1
while [ $attempt -le $max_attempts ]; do
if curl -s -f http://localhost:8080/api/v1/ping > /dev/null; then
log_success "FreqBot API 健康检查通过"
break
fi
log_info "等待服务启动... ($attempt/$max_attempts)"
sleep 10
((attempt++))
done
if [ $attempt -gt $max_attempts ]; then
log_error "健康检查失败,服务可能未正常启动"
docker-compose logs freqbot
exit 1
fi
}
# 部署后配置
post_deploy_config() {
log_info "执行部署后配置..."
# 设置定时任务(备份、日志轮转等)
if [ "$ENVIRONMENT" = "production" ]; then
# 添加crontab任务
(crontab -l 2>/dev/null; echo "0 2 * * * /app/scripts/backup.sh") | crontab -
(crontab -l 2>/dev/null; echo "0 4 * * 0 /app/scripts/cleanup_logs.sh") | crontab -
fi
# 创建监控告警(如果启用)
if grep -q "ENABLE_MONITORING=true" .env; then
log_info "设置监控告警..."
# 这里可以添加监控告警的配置逻辑
fi
log_success "部署后配置完成"
}
# 显示部署信息
show_deploy_info() {
log_success "=== 部署完成 ==="
echo
echo "访问地址:"
echo " FreqBot API: http://localhost:8080"
echo " 监控面板: http://localhost:3000"
echo
echo "常用命令:"
echo " 查看服务状态: docker-compose ps"
echo " 查看日志: docker-compose logs -f freqbot"
echo " 停止服务: docker-compose down"
echo " 重启服务: docker-compose restart"
echo
echo "配置文件:"
echo " 主配置: user_data/config_strategy21.json"
echo " 策略参数: user_data/strategy21_params.json"
echo " 环境变量: .env"
echo
log_warning "重要提示:"
echo " 1. 首次运行建议先启用 dry_run 模式测试"
echo " 2. 定期备份配置和交易数据"
echo " 3. 监控系统运行状态和性能指标"
echo " 4. 实盘交易前请充分测试"
}
# 回滚函数
rollback() {
log_warning "开始回滚部署..."
# 停止当前服务
docker-compose down
# 如果有备份,恢复配置
if [ -f "user_data/config_strategy21.json.backup" ]; then
mv user_data/config_strategy21.json.backup user_data/config_strategy21.json
log_info "配置文件已回滚"
fi
# 恢复到上一个版本的镜像
if [ ! -z "$PREVIOUS_IMAGE_TAG" ]; then
docker tag freqbot-strategy21:$PREVIOUS_IMAGE_TAG freqbot-strategy21:latest
log_info "Docker镜像已回滚"
fi
log_success "回滚完成"
}
# 主函数
main() {
local environment=${1:-development}
export ENVIRONMENT=$environment
echo "=================================================="
echo " FreqBot Strategy21 自动部署脚本"
echo " 环境: $environment"
echo " 时间: $(date)"
echo "=================================================="
# 设置错误处理
trap 'log_error "部署过程中发生错误,执行回滚..."; rollback; exit 1' ERR
# 执行部署步骤
check_dependencies
check_environment $environment
# 备份当前配置(如果存在)
if [ -f "user_data/config_strategy21.json" ]; then
cp user_data/config_strategy21.json user_data/config_strategy21.json.backup
log_info "配置文件已备份"
fi
build_images
init_database
# 生产环境需要运行测试
if [ "$environment" = "production" ]; then
run_tests
fi
start_services
health_check
post_deploy_config
show_deploy_info
log_success "部署成功完成!"
}
# 帮助信息
show_help() {
echo "FreqBot Strategy21 部署脚本"
echo
echo "用法: $0 [OPTIONS] [ENVIRONMENT]"
echo
echo "环境选项:"
echo " development 开发环境(默认)"
echo " staging 测试环境"
echo " production 生产环境"
echo
echo "选项:"
echo " -h, --help 显示帮助信息"
echo " --rollback 执行回滚操作"
echo " --health-check 仅执行健康检查"
echo
echo "示例:"
echo " $0 # 部署到开发环境"
echo " $0 production # 部署到生产环境"
echo " $0 --rollback # 执行回滚"
echo " $0 --health-check # 健康检查"
}
# 解析命令行参数
case "${1:-}" in
-h|--help)
show_help
exit 0
;;
--rollback)
rollback
exit 0
;;
--health-check)
health_check
exit 0
;;
*)
main "$@"
;;
esac验收标准
功能测试
-
文档完整性
- 用户指南覆盖所有使用场景
- 技术文档描述清晰准确
- API文档与实际接口一致
- 故障排除指南实用有效
-
部署方案
- Docker容器正常构建和运行
- 自动化部署脚本执行成功
- 环境配置管理完善
- 版本发布流程顺畅
-
运维支持
- 监控指标文档准确
- 告警处理流程清晰
- 备份恢复方案可行
- 性能调优指南有效
用户体验测试
- 易用性测试
- 新用户可按文档快速上手
- 配置过程简单明了
- 错误信息提示清楚
- 常见问题有解决方案
实现计划
阶段1:文档编写 (2小时)
- 创建用户指南和技术文档
- 编写API接口文档
- 完善配置说明文档
- 添加故障排除指南
阶段2:Docker部署配置 (1.5小时)
- 创建Dockerfile和docker-compose配置
- 编写自动化部署脚本
- 配置环境变量管理
- 设置健康检查机制
阶段3:运维文档 (0.5小时)
- 编写监控运维文档
- 创建备份恢复方案
- 添加性能调优指南
- 完善告警处理流程
依赖关系
- 前置依赖: 009 (集成测试套件) - 需要完整的测试验证
- 并行执行: 不可与其他任务并行执行
- 后续集成: 项目最终交付
风险与缓解
技术风险
-
Docker兼容性问题
- 风险:不同环境Docker配置差异
- 缓解:提供多平台Docker配置,详细环境要求
-
部署脚本复杂性
- 风险:自动化脚本在不同环境失败
- 缓解:充分测试,提供手动部署备选方案
业务风险
- 文档维护成本
- 风险:代码更新后文档不同步
- 缓解:建立文档更新检查流程
成功指标
- 文档完整度 - 覆盖所有使用场景和功能
- 部署成功率 - 自动化部署成功率 > 95%
- 用户上手时间 - 新用户30分钟内完成部署
- 故障处理效率 - 常见问题5分钟内找到解决方案
- 运维便利性 - 运维操作标准化和自动化
交付物
-
用户文档
- README.md (项目介绍)
- docs/user-guide/ (用户指南)
- docs/configuration/ (配置文档)
- docs/faq.md (常见问题)
-
技术文档
- docs/development/ (开发者指南)
- docs/api/ (API接口文档)
- docs/architecture/ (架构设计文档)
-
部署配置
- Dockerfile (容器配置)
- docker-compose.yml (服务编排)
- scripts/deploy.sh (部署脚本)
- .env.example (环境配置模板)
-
运维文档
- docs/deployment/ (部署指南)
- docs/monitoring/ (监控运维)
- docs/troubleshooting/ (故障排除)
- scripts/backup.sh (备份脚本)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels