# Stock Monitor Docker部署指南 ## 快速开始 ### 1. 环境要求 - Docker 20.10+ - Docker Compose 1.29+ - 4GB+ 可用内存 - 10GB+ 可用磁盘空间 ### 2. 配置环境变量 ```bash # 复制环境变量文件到项目根目录 cp ../.env.example ../.env # 编辑.env文件,设置必要的配置参数 ``` ### 3. 快速部署 ```bash # 进入docker目录 cd docker # 使用部署脚本 ./deploy.sh # 或者手动部署 docker-compose up -d ``` ### 4. 访问应用 - 应用地址: http://localhost:8000 - API文档: http://localhost:8000/docs ## 部署模式 ### 开发模式 ```bash cd docker docker-compose up -d ``` 包含服务: - stock-monitor (主应用) - redis (可选缓存) - postgres (可选数据库) ### 生产模式 ```bash cd docker docker-compose -f docker-compose.prod.yml up -d ``` 包含服务: - stock-monitor (主应用) - redis (缓存) - postgres (数据库) - nginx (反向代理) ## 配置说明 ### 环境变量 | 变量名 | 说明 | 默认值 | |--------|------|--------| | TUSHARE_TOKEN | Tushare API令牌 | 必填 | | DB_HOST | 数据库主机 | postgres | | DB_PORT | 数据库端口 | 5432 | | DB_NAME | 数据库名称 | stock_monitor | | DB_USER | 数据库用户 | stock_user | | DB_PASSWORD | 数据库密码 | stock_password | | REDIS_HOST | Redis主机 | redis | | REDIS_PORT | Redis端口 | 6379 | ### 端口映射 | 服务 | 容器端口 | 主机端口 | |------|----------|----------| | stock-monitor | 8000 | 8000 | | redis | 6379 | 6379 | | postgres | 5432 | 5432 | | nginx | 80/443 | 80/443 | ## 数据持久化 ### 卷映射 - `../logs:/app/logs` - 应用日志 - `../data:/app/data` - 数据文件 - `../config.json:/app/config.json` - 配置文件 - `postgres_data:/var/lib/postgresql/data` - 数据库数据 - `redis_data:/data` - Redis数据 ### 备份策略 ```bash # 备份数据库 docker exec stock-postgres pg_dump -U stock_user stock_monitor > backup.sql # 备份Redis docker exec stock-redis redis-cli save docker cp stock-redis:/data/dump.rdb ./redis_backup.rdb ``` ## 监控和维护 ### 查看日志 ```bash # 查看所有服务日志 docker-compose logs -f # 查看特定服务日志 docker-compose logs -f stock-monitor ``` ### 性能监控 ```bash # 查看容器资源使用 docker stats # 查看容器状态 docker-compose ps ``` ### 更新应用 ```bash # 拉取最新镜像 docker-compose pull # 重新部署 docker-compose up -d # 清理旧镜像 docker image prune -f ``` ## 故障排查 ### 常见问题 1. **容器启动失败** ```bash # 查看详细日志 docker-compose logs [service-name] # 检查配置文件 ls -la ../config.json ../.env ``` 2. **数据库连接失败** ```bash # 检查数据库状态 docker-compose exec postgres pg_isready -U stock_user # 检查网络连接 docker-compose exec stock-monitor ping postgres ``` 3. **端口冲突** ```bash # 检查端口占用 netstat -tulpn | grep :8000 # 修改端口映射 # 编辑docker-compose.yml文件 ``` ### 健康检查 ```bash # 检查服务健康状态 curl http://localhost:8000/health # 检查数据库连接 docker-compose exec stock-monitor python -c "import psycopg2; psycopg2.connect(host='postgres', user='stock_user', password='stock_password', database='stock_monitor')" ``` ## 安全建议 1. **修改默认密码** - 修改数据库密码 - 修改Redis密码 - 修改应用密钥 2. **配置SSL证书** - 将证书文件放置在`./ssl/`目录 - 配置nginx.conf文件 3. **限制访问** - 配置防火墙规则 - 使用VPN访问 - 配置访问白名单 ## 卸载 ```bash # 停止并删除所有容器 docker-compose down # 删除数据卷(谨慎操作) docker-compose down -v # 删除镜像 docker image rm docker_stock-monitor ```