120 lines
3.7 KiB
Markdown
120 lines
3.7 KiB
Markdown
# 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()` 补表。
|