alphax/README_DOCKER.md
2026-05-13 22:32:50 +08:00

120 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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()` 补表。