# AlphaX Docker 化副本 这是从当前运行中的 `/home/ubuntu/quant_monitor/altcoin` 复制出来的独立 Docker 化副本,目录: ```text /home/ubuntu/quant_monitor/alphax-docker ``` ## 重要原则 - 这个目录是副本,不影响当前正在运行的 AlphaX。 - 默认 `docker-compose.yml` 将 Web 暴露到宿主机 `8191`,避免占用当前线上 `8190`。 - 调度器默认 `ALPHAX_SCHEDULER_DRY_RUN=1`,第一次启动不会真的跑筛选/确认/跟踪任务。 - SQLite 数据挂载在 `./data/altcoin_monitor.db`,容器内路径为 `/app/data/altcoin_monitor.db`。 - 镜像构建上下文通过 `.dockerignore` 排除了 `data/`、`archive/`、真实 `.env` 和所有 DB 文件,避免把数据库/密钥打进镜像。 ## 快速启动 ```bash cd /home/ubuntu/quant_monitor/alphax-docker cp .env.example .env # 如需推送,编辑 .env 填 ALTCOIN_FEISHU_WEBHOOK docker compose build docker compose up -d alphax-web curl -s http://127.0.0.1:8191/api/stats ``` 确认 Web 正常后,如果要启动调度器: ```bash docker compose up -d alphax-scheduler ``` 调度器默认 dry-run,只打印计划,不写库。确认日志无误后,把 `.env` 或 compose 里的: ```text ALPHAX_SCHEDULER_DRY_RUN=0 ``` 再重启: ```bash docker compose up -d alphax-scheduler ``` ## 服务说明 - `alphax-web`:FastAPI + 静态页面,容器内 8190,宿主机 8191。 - `alphax-scheduler`:轻量 Python 调度器,串行执行任务,避免 SQLite 并发锁。 调度任务与当前线上大致对齐: | 任务 | 脚本 | 间隔 | |---|---|---| | 事件舆情 | `event_driven_screener.py --once` | 60s | | 价格跟踪 | `price_tracker.py` | 180s | | 爆发确认 | `altcoin_confirm.py` | 600s | | 粗筛/细筛 | `altcoin_screener.py` | 900s | | 舆情采集 | `sentiment_monitor.py --collect` | 1800s | | 复盘 | `review_engine.py` | 24h | ## 验证命令 ```bash cd /home/ubuntu/quant_monitor/alphax-docker python3 -m py_compile altcoin_db.py auth_db.py opportunity_lifecycle.py altcoin_screener.py altcoin_confirm.py price_tracker.py event_driven_screener.py sentiment_monitor.py review_engine.py web_server.py docker/scheduler.py scripts/validate_docker_layout.py python3 scripts/validate_docker_layout.py python3 scripts/validate_state_machine.py python3 scripts/validate_push_state_flow.py python3 scripts/validate_signal_recency.py ``` Docker 配置验证: ```bash docker compose config ``` > 当前机器如果没有 Docker,只能做离线文件/语法/DB 校验;到有 Docker 的机器上再执行 build/up。 ## 数据迁移 当前副本是从线上目录复制来的,包含复制时刻的 `altcoin_monitor.db`。为了避免误影响线上,容器读写的是副本目录下的: ```text ./data/altcoin_monitor.db ``` 容器内路径通过环境变量配置: ```text ALPHAX_DB_PATH=/app/data/altcoin_monitor.db ``` 如需重新以线上最新数据初始化副本,应停掉副本容器后手动复制 DB: ```bash cd /home/ubuntu/quant_monitor/alphax-docker docker compose down cp /home/ubuntu/quant_monitor/altcoin/altcoin_monitor.db ./data/altcoin_monitor.db ``` 不要反向覆盖线上 DB。 ## 打包迁移到新服务器 建议只打包代码和配置骨架,不把 DB 直接打进镜像。可以用 tar 打包整个副本目录,排除本地缓存和归档备份: ```bash cd /home/ubuntu/quant_monitor tar --exclude='alphax-docker/.git' \ --exclude='alphax-docker/__pycache__' \ --exclude='alphax-docker/.pytest_cache' \ --exclude='alphax-docker/archive' \ -czf alphax-docker.tar.gz alphax-docker ``` 如果新服务器要带初始 DB,可以保留 `alphax-docker/data/altcoin_monitor.db`;如果希望空库启动,则删除该文件,容器首次启动会创建空 DB 并由 `init_db()` 补表。