| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- version: '3.8'
- services:
- # ============================================
- # 多模态解析服务 (Python/FastAPI)
- # ============================================
- parse-service:
- build:
- context: ./parse-service
- dockerfile: Dockerfile
- container_name: parse-service
- ports:
- - "8000:8000"
- environment:
- - UPLOAD_DIR=/tmp/parse-service/uploads
- # AI 模型地址
- - MINERU_API_URL=http://10.192.72.13:7284
- - QWEN_VL_URL=http://10.192.72.13:7280
- - QWEN_ASR_URL=http://10.192.72.13:7283
- volumes:
- - parse-service-data:/tmp/parse-service/uploads
- networks:
- - multimodal-network
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
- interval: 30s
- timeout: 10s
- retries: 3
- restart: unless-stopped
- # ============================================
- # 向量化服务 (Java/Spring Boot)
- # ============================================
- embedding-api:
- build:
- context: ./schedule-embedding-api
- dockerfile: Dockerfile
- container_name: embedding-api
- ports:
- - "8084:8084"
- environment:
- - SPRING_PROFILES_ACTIVE=prod
- # Elasticsearch 配置
- - ELASTICSEARCH_URL=http://elasticsearch:9200
- # MySQL 配置
- - MYSQL_URL=jdbc:mysql://mysql:3306/multimodel?useUnicode=true&characterEncoding=utf-8
- - MYSQL_USERNAME=root
- - MYSQL_PASSWORD=root123456
- depends_on:
- - elasticsearch
- - mysql
- networks:
- - multimodal-network
- restart: unless-stopped
- # ============================================
- # Flink JobManager
- # ============================================
- flink-jobmanager:
- image: flink:1.18.1-scala_2.12-java17
- container_name: flink-jobmanager
- ports:
- - "8081:8081"
- command: jobmanager
- environment:
- - |
- FLINK_PROPERTIES=
- jobmanager.rpc.address: flink-jobmanager
- execution.checkpointing.interval: 60000
- state.backend: filesystem
- state.checkpoints.dir: /tmp/flink-checkpoints
- state.savepoints.dir: /tmp/flink-savepoints
- volumes:
- - flink-checkpoints:/tmp/flink-checkpoints
- - flink-savepoints:/tmp/flink-savepoints
- - ./schedule-flink/target:/opt/flink/usrlib
- networks:
- - multimodal-network
- restart: unless-stopped
- # ============================================
- # Flink TaskManager
- # ============================================
- flink-taskmanager:
- image: flink:1.18.1-scala_2.12-java17
- container_name: flink-taskmanager
- depends_on:
- - flink-jobmanager
- command: taskmanager
- deploy:
- replicas: 2
- environment:
- - |
- FLINK_PROPERTIES=
- jobmanager.rpc.address: flink-jobmanager
- taskmanager.numberOfTaskSlots: 4
- volumes:
- - flink-checkpoints:/tmp/flink-checkpoints
- - flink-savepoints:/tmp/flink-savepoints
- networks:
- - multimodal-network
- restart: unless-stopped
- # ============================================
- # Elasticsearch (向量存储 + 全文检索)
- # ============================================
- elasticsearch:
- image: elasticsearch:8.12.0
- container_name: elasticsearch
- ports:
- - "9200:9200"
- - "9300:9300"
- environment:
- - discovery.type=single-node
- - xpack.security.enabled=false
- - ES_JAVA_OPTS=-Xms4g -Xmx4g
- volumes:
- - es-data:/usr/share/elasticsearch/data
- networks:
- - multimodal-network
- restart: unless-stopped
- # ============================================
- # MySQL (元数据存储)
- # ============================================
- mysql:
- image: mysql:8.0
- container_name: mysql
- ports:
- - "3306:3306"
- environment:
- - MYSQL_ROOT_PASSWORD=root123456
- - MYSQL_DATABASE=multimodel
- volumes:
- - mysql-data:/var/lib/mysql
- networks:
- - multimodal-network
- restart: unless-stopped
- # ============================================
- # 管理前端 (Vue.js)
- # ============================================
- schedule-admin:
- build:
- context: ./schedule-admin
- dockerfile: Dockerfile
- container_name: schedule-admin
- ports:
- - "8080:80"
- depends_on:
- - parse-service
- - embedding-api
- networks:
- - multimodal-network
- restart: unless-stopped
- volumes:
- parse-service-data:
- flink-checkpoints:
- flink-savepoints:
- es-data:
- mysql-data:
- networks:
- multimodal-network:
- driver: bridge
|