tradusai/docker-compose.yml
2025-12-09 12:27:47 +08:00

92 lines
2.2 KiB
YAML

version: '3.8'
services:
# Signal Generator Scheduler - 定时生成交易信号
scheduler:
build:
context: .
dockerfile: Dockerfile
container_name: tradus-scheduler
command: python -u scheduler.py
env_file: .env
volumes:
- ./output:/app/output # 输出信号文件
environment:
# Symbol Configuration
- SYMBOL=BTCUSDT
# Signal generation interval
- SIGNAL_INTERVAL_MINUTES=15 # 每15分钟生成一次信号
# Note: LLM API and DingTalk configs are loaded from .env file
- LOG_LEVEL=INFO
networks:
- tradus-network
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Paper Trading - 模拟盘交易
paper-trading:
build:
context: .
dockerfile: Dockerfile
container_name: tradus-paper-trading
command: python -u -m trading.realtime_trader
env_file: .env
volumes:
- ./output:/app/output # 共享信号文件和交易状态
environment:
- SYMBOL=BTCUSDT
- LOG_LEVEL=INFO
depends_on:
- scheduler
networks:
- tradus-network
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Web Dashboard - 模拟盘状态展示
dashboard:
build:
context: .
dockerfile: Dockerfile
container_name: tradus-dashboard
command: python -m uvicorn web.api:app --host 0.0.0.0 --port 8000
env_file: .env
volumes:
- ./output:/app/output # 共享交易状态文件
ports:
- "18080:8000" # 使用18080端口避免冲突
environment:
- LOG_LEVEL=INFO
depends_on:
- paper-trading
networks:
- tradus-network
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/status')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
tradus-network:
driver: bridge