docker-compose.yml 1.5 KB
# 生产拓扑映射:Nginx(前端) + 引擎 + MySQL8 + RocketMQ
# 从仓库根目录执行:  docker compose -f deploy/docker-compose.yml up --build
# 说明:MySQL/RocketMQ 为生产映射;本机快速体验用根目录 ./start.sh(H2 内存库)即可。
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: trade_db
      MYSQL_USER: trade
      MYSQL_PASSWORD: trade123
    ports: ["3306:3306"]
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot123"]
      interval: 5s
      timeout: 3s
      retries: 20

  rocketmq-namesrv:
    image: apache/rocketmq:5.3.0
    command: sh mqnamesrv
    ports: ["9876:9876"]

  rocketmq-broker:
    image: apache/rocketmq:5.3.0
    command: sh mqbroker -n rocketmq-namesrv:9876 --enable-proxy
    environment:
      NAMESRV_ADDR: rocketmq-namesrv:9876
    depends_on: [rocketmq-namesrv]
    ports: ["10911:10911", "8081:8080"]

  engine:
    build:
      context: ..
      dockerfile: deploy/Dockerfile.engine
    environment:
      DB_HOST: mysql
      DB_USER: trade
      DB_PASS: trade123
      ROCKETMQ_NAMESRV: rocketmq-namesrv:9876
    volumes:
      # 挂载模型目录:线上改 YAML + 调 /api/meta/reload 即热更新,无需重发版
      - ../models:/app/models:ro
    depends_on:
      mysql:
        condition: service_healthy
    ports: ["8080:8080"]

  web:
    build:
      context: ..
      dockerfile: deploy/Dockerfile.web
    depends_on: [engine]
    ports: ["8088:80"]