docker-compose.yml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. version: '3.8'
  2. services:
  3. # RAG 应用服务
  4. app:
  5. container_name: rag-system-app
  6. build:
  7. context: ..
  8. dockerfile: docker/Dockerfile
  9. target: production # 使用生产环境镜像
  10. restart: unless-stopped
  11. ports:
  12. - "8000:8000"
  13. volumes:
  14. - ../.env:/app/.env:ro # 只读挂载环境变量
  15. - ../logs:/app/logs # 日志目录
  16. environment:
  17. - TZ=Asia/Shanghai
  18. - DB_HOST=postgres
  19. - INFINITY_HOST=infinity
  20. - REDIS_HOST=redis
  21. depends_on:
  22. postgres:
  23. condition: service_healthy
  24. infinity:
  25. condition: service_started
  26. redis:
  27. condition: service_healthy
  28. networks:
  29. - rag-network
  30. healthcheck:
  31. test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
  32. interval: 30s
  33. timeout: 10s
  34. retries: 3
  35. start_period: 40s
  36. # PostgreSQL 数据库
  37. postgres:
  38. image: postgres:15-alpine
  39. container_name: rag-system-postgres
  40. restart: unless-stopped
  41. ports:
  42. - "5432:5432"
  43. environment:
  44. - POSTGRES_DB=rag_system
  45. - POSTGRES_USER=rag_user
  46. - POSTGRES_PASSWORD=rag_password
  47. - TZ=Asia/Shanghai
  48. volumes:
  49. - postgres-data:/var/lib/postgresql/data
  50. - ../doc/sql:/docker-entrypoint-initdb.d:ro # 初始化脚本
  51. networks:
  52. - rag-network
  53. healthcheck:
  54. test: ["CMD-SHELL", "pg_isready -U rag_user -d rag_system"]
  55. interval: 10s
  56. timeout: 5s
  57. retries: 5
  58. # Infinity 向量数据库
  59. infinity:
  60. image: infiniflow/infinity:latest
  61. container_name: rag-system-infinity
  62. restart: unless-stopped
  63. ports:
  64. - "23817:23817"
  65. volumes:
  66. - infinity-data:/var/infinity/data
  67. environment:
  68. - TZ=Asia/Shanghai
  69. networks:
  70. - rag-network
  71. # Redis 缓存(可选)
  72. redis:
  73. image: redis:7-alpine
  74. container_name: rag-system-redis
  75. restart: unless-stopped
  76. ports:
  77. - "6379:6379"
  78. volumes:
  79. - redis-data:/data
  80. command: redis-server --appendonly yes
  81. networks:
  82. - rag-network
  83. healthcheck:
  84. test: ["CMD", "redis-cli", "ping"]
  85. interval: 10s
  86. timeout: 5s
  87. retries: 5
  88. volumes:
  89. postgres-data:
  90. driver: local
  91. infinity-data:
  92. driver: local
  93. redis-data:
  94. driver: local
  95. networks:
  96. rag-network:
  97. driver: bridge