You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

Docker 快速启动指南

前置要求

启动步骤

1. 启动数据库

Windows:

start-db-only.bat

或者手动启动:

docker run -d --name market_data_postgres \
    -e POSTGRES_USER=postgres \
    -e POSTGRES_PASSWORD=postgres123 \
    -e POSTGRES_DB=marketdata \
    -p 5432:5432 \
    postgres:15-alpine

2. 初始化数据库表

python test_db.py

输出示例:

==================================================
数据库连接测试
==================================================
✅ 数据库连接成功
   PostgreSQL 版本: PostgreSQL 15.5 on x86_64-pc-linux-musl...

正在初始化数据库表...
✅ 数据库表创建成功

已创建的表 (13 个):
   - data_quality_checks
   - data_source_config
   - futures_klines_1d
   - futures_klines_1m
   - futures_symbols
   - futures_trading_calendar
   - stock_klines_1d
   - stock_klines_1m
   - stock_klines_5m
   - stock_symbols
   - stock_trading_calendar
   ...

==================================================
数据库初始化完成!
==================================================

3. 启动服务

python -m app.main

验证服务

打开浏览器访问:

完整 Docker Compose 启动

一键启动所有服务(数据库 + Redis + 应用):

docker compose up -d

查看日志:

docker compose logs -f

停止服务:

docker compose down

故障排查

问题 1: 端口被占用

错误:

Bind for 0.0.0.0:5432 failed: port is already allocated

解决:

# 查看占用端口的进程
netstat -ano | findstr 5432

# 停止冲突的容器
docker stop <container_id>

问题 2: 数据库连接失败

检查步骤:

# 1. 检查容器是否运行
docker ps | findstr postgres

# 2. 查看容器日志
docker logs market_data_postgres

# 3. 测试连接
docker exec -it market_data_postgres pg_isready -U postgres

问题 3: 表未创建

手动初始化:

python test_db.py

数据持久化

数据存储在 Docker 卷中:

# 查看卷
docker volume ls

# 备份数据
docker exec -it market_data_postgres pg_dump -U postgres marketdata > backup.sql

# 恢复数据
docker exec -i market_data_postgres psql -U postgres marketdata < backup.sql

完全重置

删除所有数据并重新启动:

# 停止并删除容器
docker compose down -v

# 重新启动
docker compose up -d

# 初始化表
python test_db.py