| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- version: '3.8'
- networks:
- rag_net:
- name: rag_net
- driver: bridge
- services:
- # 业务MySQL 存储文档元数据、问答日志
- mysql:
- image: mysql:8.4
- container_name: rag-mysql
- environment:
- - MYSQL_ROOT_PASSWORD=root1234
- - TZ=Asia/Shanghai
- - MYSQL_ROOT_HOST=%
- - MYSQL_DATABASE=rag_kb
- ports:
- - "3306:3306"
- privileged: true
- volumes:
- - /opt/rag/mysql/conf:/etc/mysql/conf.d
- - /opt/rag/mysql/data:/var/lib/mysql
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot1234"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 30s
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "0.8"
- memory: 768M
- reservations:
- cpus: "0.4"
- memory: 384M
- # Redis 缓存问答上下文、文件临时数据
- redis:
- image: redis:latest
- container_name: rag-redis
- ports:
- - "6379:6379"
- privileged: true
- volumes:
- - /opt/rag/redis/conf/redis.conf:/usr/local/etc/redis.conf:ro
- - /opt/rag/redis/data:/data
- command: redis-server /usr/local/etc/redis.conf
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 5s
- timeout: 3s
- retries: 5
- start_period: 10s
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "0.3"
- memory: 256M
- reservations:
- cpus: "0.1"
- memory: 128M
- # MinIO 对象存储(Milvus 依赖)
- minio:
- image: minio/minio:latest
- container_name: rag-minio
- ports:
- - "9000:9000" # S3 API 端口
- - "9001:9001" # Web 控制台端口
- environment:
- MINIO_ROOT_USER: minioadmin
- MINIO_ROOT_PASSWORD: minioadmin
- volumes:
- - /opt/rag/minio/data:/data
- command: server /data --console-address ":9001"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
- interval: 30s
- timeout: 10s
- retries: 3
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "0.5"
- memory: 512M
- reservations:
- cpus: "0.2"
- memory: 256M
- # Milvus 向量库(现在连接 MinIO)
- milvus-standalone:
- image: milvusdb/milvus:v2.4.6
- container_name: rag-milvus
- command: ["milvus", "run", "standalone"]
- ports:
- - "19530:19530"
- - "9091:9091"
- volumes:
- - /opt/rag/milvus/data:/var/lib/milvus
- environment:
- TZ: Asia/Shanghai
- ETCD_USE_EMBED: "true"
- # 使用 MinIO 作为对象存储(不再使用 local)
- MINIO_ADDRESS: minio:9000
- MINIO_ACCESS_KEY_ID: minioadmin
- MINIO_SECRET_ACCESS_KEY: minioadmin
- MINIO_USE_SSL: "false"
- MINIO_BUCKET_NAME: "a-bucket" # 与日志中一致,也可自定义
- # 可选:如果希望 Milvus 自动创建 bucket,可以添加
- # MINIO_CREATE_BUCKET: "true"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
- interval: 20s
- timeout: 10s
- retries: 3
- start_period: 90s
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "1.2"
- memory: 2G
- reservations:
- cpus: "0.6"
- memory: 1G
- # Gogs 本地代码仓库,存放填空脚手架
- gogs:
- image: gogs/gogs:latest
- container_name: rag-gogs
- ports:
- - "3000:3000"
- - "2222:22"
- volumes:
- - /opt/rag/gogs:/data
- command: sh -c "apk add --no-cache curl && /app/gogs/docker/start.sh"
- privileged: true
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/"]
- interval: 10s
- timeout: 5s
- retries: 3
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "0.4"
- memory: 512M
- reservations:
- cpus: "0.2"
- memory: 256M
- # 自定义Jenkins镜像 my-jenkins:with-plugins
- jenkins:
- image: my-jenkins:with-plugins
- container_name: rag-jenkins
- ports:
- - "8899:8080"
- - "50000:50000"
- environment:
- - JAVA_OPTS=-Xms512m -Xmx1024m
- volumes:
- - /opt/rag/jenkins/home:/var/jenkins_home
- - /var/run/docker.sock:/var/run/docker.sock
- - /usr/bin/docker:/usr/bin/docker
- - /opt/docker-compose:/usr/bin/docker-compose
- - /opt/docker-compose.yaml:/opt/docker-compose.yaml
- privileged: true
- group_add:
- - "983"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8080/login"]
- interval: 10s
- timeout: 10s
- retries: 3
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "1.0"
- memory: 2G
- reservations:
- cpus: "0.5"
- memory: 1G
- # Nginx 前端/接口转发
- nginx:
- image: nginx
- container_name: rag-nginx
- ports:
- - "80:80"
- volumes:
- - /opt/rag/nginx/conf.d:/etc/nginx/conf.d:ro
- - /opt/rag/nginx/html:/usr/share/nginx/html
- - /opt/rag/nginx/logs:/var/log/nginx
- healthcheck:
- test: ["CMD", "nginx", "-t"]
- interval: 10s
- timeout: 5s
- retries: 3
- networks:
- - rag_net
- restart: always
- deploy:
- resources:
- limits:
- cpus: "0.3"
- memory: 128M
- reservations:
- cpus: "0.1"
- memory: 64M
- # rag-kb-backend 服务
- rag-kb-backend:
- image: rag-kb-backend:latest
- container_name: rag-kb-backend
- ports:
- - "8080:8080"
- networks:
- - rag_net
- restart: always
|