# docker-compose.yml — 一键起 market_sync 数据同步服务 # # 包含: # - postgres : PostgreSQL 16(market_data schema 的主库) # - market_sync : 数据同步 + dashboard + scheduler(单进程) # # 用法: # docker compose up -d # 后台启动 # docker compose logs -f market_sync # 看同步日志 # docker compose exec market_sync \ # python -m app.entrypoints.cli sync stock_node --type2 2,3 # version: "3.9" services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: market_sync POSTGRES_PASSWORD: market_sync POSTGRES_DB: market_data ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U market_sync -d market_data"] interval: 10s timeout: 3s retries: 5 market_sync: build: context: . dockerfile: Dockerfile image: market_sync:latest restart: unless-stopped depends_on: postgres: condition: service_healthy environment: # PG 连接(指向同 compose 的 postgres 服务) PG_HOST: postgres PG_PORT: "5432" PG_USER: market_sync PG_PASSWORD: market_sync PG_DB_NAME: market_data DB_BACKEND: pg # 调度 SCHEDULER_TIMEZONE: Asia/Shanghai SCHEDULER_TICK_SECONDS: "5" SCHEDULER_AUTO_SEED: "true" # API API_HOST: 0.0.0.0 API_PORT: "8100" # 日志 LOG_DIR: /app/logs LOG_LEVEL: INFO # 数据源开关 DS_BAOSTOCK_ENABLED: "true" DS_SINA_ENABLED: "true" # 凭证(可放进 .env / secrets 文件,避免明文) MAIRUI_LICENCE: ${MAIRUI_LICENCE:-} XUEQIU_TOKEN: ${XUEQIU_TOKEN:-} # 麦蕊限速(钻石 100 RPS 留 buffer;服务化后保守点) MAIRUI_RPS_LIMIT: "10" # 节假日 TRADING_HOLIDAYS: ${TRADING_HOLIDAYS:-} ports: - "8100:8100" volumes: # 持久化日志(任务失败时方便排查) - sync_logs:/app/logs healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:8100/api/health"] interval: 60s timeout: 5s retries: 3 start_period: 30s volumes: pgdata: sync_logs: