docker-compose.yaml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. version: '3.8'
  2. networks:
  3. rag_net:
  4. name: rag_net
  5. driver: bridge
  6. services:
  7. # 业务MySQL 存储文档元数据、问答日志
  8. mysql:
  9. image: mysql:8.4
  10. container_name: rag-mysql
  11. environment:
  12. - MYSQL_ROOT_PASSWORD=root1234
  13. - TZ=Asia/Shanghai
  14. - MYSQL_ROOT_HOST=%
  15. - MYSQL_DATABASE=rag_kb
  16. ports:
  17. - "3306:3306"
  18. privileged: true
  19. volumes:
  20. - /opt/rag/mysql/conf:/etc/mysql/conf.d
  21. - /opt/rag/mysql/data:/var/lib/mysql
  22. healthcheck:
  23. test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot1234"]
  24. interval: 10s
  25. timeout: 5s
  26. retries: 5
  27. start_period: 30s
  28. networks:
  29. - rag_net
  30. restart: always
  31. deploy:
  32. resources:
  33. limits:
  34. cpus: "0.8"
  35. memory: 768M
  36. reservations:
  37. cpus: "0.4"
  38. memory: 384M
  39. # Redis 缓存问答上下文、文件临时数据
  40. redis:
  41. image: redis:latest
  42. container_name: rag-redis
  43. ports:
  44. - "6379:6379"
  45. privileged: true
  46. volumes:
  47. - /opt/rag/redis/conf/redis.conf:/usr/local/etc/redis.conf:ro
  48. - /opt/rag/redis/data:/data
  49. command: redis-server /usr/local/etc/redis.conf
  50. healthcheck:
  51. test: ["CMD", "redis-cli", "ping"]
  52. interval: 5s
  53. timeout: 3s
  54. retries: 5
  55. start_period: 10s
  56. networks:
  57. - rag_net
  58. restart: always
  59. deploy:
  60. resources:
  61. limits:
  62. cpus: "0.3"
  63. memory: 256M
  64. reservations:
  65. cpus: "0.1"
  66. memory: 128M
  67. # MinIO 对象存储(Milvus 依赖)
  68. minio:
  69. image: minio/minio:latest
  70. container_name: rag-minio
  71. ports:
  72. - "9000:9000" # S3 API 端口
  73. - "9001:9001" # Web 控制台端口
  74. environment:
  75. MINIO_ROOT_USER: minioadmin
  76. MINIO_ROOT_PASSWORD: minioadmin
  77. volumes:
  78. - /opt/rag/minio/data:/data
  79. command: server /data --console-address ":9001"
  80. healthcheck:
  81. test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
  82. interval: 30s
  83. timeout: 10s
  84. retries: 3
  85. networks:
  86. - rag_net
  87. restart: always
  88. deploy:
  89. resources:
  90. limits:
  91. cpus: "0.5"
  92. memory: 512M
  93. reservations:
  94. cpus: "0.2"
  95. memory: 256M
  96. # Milvus 向量库(现在连接 MinIO)
  97. milvus-standalone:
  98. image: milvusdb/milvus:v2.4.6
  99. container_name: rag-milvus
  100. command: ["milvus", "run", "standalone"]
  101. ports:
  102. - "19530:19530"
  103. - "9091:9091"
  104. volumes:
  105. - /opt/rag/milvus/data:/var/lib/milvus
  106. environment:
  107. TZ: Asia/Shanghai
  108. ETCD_USE_EMBED: "true"
  109. # 使用 MinIO 作为对象存储(不再使用 local)
  110. MINIO_ADDRESS: minio:9000
  111. MINIO_ACCESS_KEY_ID: minioadmin
  112. MINIO_SECRET_ACCESS_KEY: minioadmin
  113. MINIO_USE_SSL: "false"
  114. MINIO_BUCKET_NAME: "a-bucket" # 与日志中一致,也可自定义
  115. # 可选:如果希望 Milvus 自动创建 bucket,可以添加
  116. # MINIO_CREATE_BUCKET: "true"
  117. healthcheck:
  118. test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
  119. interval: 20s
  120. timeout: 10s
  121. retries: 3
  122. start_period: 90s
  123. networks:
  124. - rag_net
  125. restart: always
  126. deploy:
  127. resources:
  128. limits:
  129. cpus: "1.2"
  130. memory: 2G
  131. reservations:
  132. cpus: "0.6"
  133. memory: 1G
  134. # Gogs 本地代码仓库,存放填空脚手架
  135. gogs:
  136. image: gogs/gogs:latest
  137. container_name: rag-gogs
  138. ports:
  139. - "3000:3000"
  140. - "2222:22"
  141. volumes:
  142. - /opt/rag/gogs:/data
  143. command: sh -c "apk add --no-cache curl && /app/gogs/docker/start.sh"
  144. privileged: true
  145. healthcheck:
  146. test: ["CMD", "curl", "-f", "http://localhost:3000/"]
  147. interval: 10s
  148. timeout: 5s
  149. retries: 3
  150. networks:
  151. - rag_net
  152. restart: always
  153. deploy:
  154. resources:
  155. limits:
  156. cpus: "0.4"
  157. memory: 512M
  158. reservations:
  159. cpus: "0.2"
  160. memory: 256M
  161. # 自定义Jenkins镜像 my-jenkins:with-plugins
  162. jenkins:
  163. image: my-jenkins:with-plugins
  164. container_name: rag-jenkins
  165. ports:
  166. - "8899:8080"
  167. - "50000:50000"
  168. environment:
  169. - JAVA_OPTS=-Xms512m -Xmx1024m
  170. volumes:
  171. - /opt/rag/jenkins/home:/var/jenkins_home
  172. - /var/run/docker.sock:/var/run/docker.sock
  173. - /usr/bin/docker:/usr/bin/docker
  174. - /opt/docker-compose:/usr/bin/docker-compose
  175. - /opt/docker-compose.yaml:/opt/docker-compose.yaml
  176. privileged: true
  177. group_add:
  178. - "983"
  179. healthcheck:
  180. test: ["CMD", "curl", "-f", "http://localhost:8080/login"]
  181. interval: 10s
  182. timeout: 10s
  183. retries: 3
  184. networks:
  185. - rag_net
  186. restart: always
  187. deploy:
  188. resources:
  189. limits:
  190. cpus: "1.0"
  191. memory: 2G
  192. reservations:
  193. cpus: "0.5"
  194. memory: 1G
  195. # Nginx 前端/接口转发
  196. nginx:
  197. image: nginx
  198. container_name: rag-nginx
  199. ports:
  200. - "80:80"
  201. volumes:
  202. - /opt/rag/nginx/conf.d:/etc/nginx/conf.d:ro
  203. - /opt/rag/nginx/html:/usr/share/nginx/html
  204. - /opt/rag/nginx/logs:/var/log/nginx
  205. healthcheck:
  206. test: ["CMD", "nginx", "-t"]
  207. interval: 10s
  208. timeout: 5s
  209. retries: 3
  210. networks:
  211. - rag_net
  212. restart: always
  213. deploy:
  214. resources:
  215. limits:
  216. cpus: "0.3"
  217. memory: 128M
  218. reservations:
  219. cpus: "0.1"
  220. memory: 64M
  221. # rag-kb-backend 服务
  222. rag-kb-backend:
  223. image: rag-kb-backend:latest
  224. container_name: rag-kb-backend
  225. ports:
  226. - "8080:8080"
  227. networks:
  228. - rag_net
  229. restart: always