docker-compose.dev.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. version: '3.8'
  2. services:
  3. # RAG 应用服务(开发模式)
  4. app:
  5. container_name: rag-system-app-dev
  6. build:
  7. context: ..
  8. dockerfile: docker/Dockerfile
  9. target: development # 使用开发环境镜像
  10. restart: unless-stopped
  11. ports:
  12. - "8000:8000"
  13. volumes:
  14. - ../.env:/app/.env:ro # 只读挂载环境变量
  15. - ../src:/app/src # 挂载源码以支持热重载
  16. - ../tests:/app/tests # 挂载测试代码
  17. - ../logs:/app/logs # 日志目录
  18. environment:
  19. - TZ=Asia/Shanghai
  20. - DEBUG=true
  21. - LOG_LEVEL=DEBUG
  22. - DB_HOST=postgres
  23. - INFINITY_HOST=infinity
  24. - REDIS_HOST=redis
  25. depends_on:
  26. postgres:
  27. condition: service_healthy
  28. infinity:
  29. condition: service_started
  30. redis:
  31. condition: service_healthy
  32. networks:
  33. - rag-network
  34. command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
  35. # PostgreSQL 数据库
  36. postgres:
  37. image: postgres:15-alpine
  38. container_name: rag-system-postgres-dev
  39. restart: unless-stopped
  40. ports:
  41. - "5432:5432"
  42. environment:
  43. - POSTGRES_DB=rag_system_dev
  44. - POSTGRES_USER=rag_user
  45. - POSTGRES_PASSWORD=rag_password
  46. - TZ=Asia/Shanghai
  47. volumes:
  48. - postgres-dev-data:/var/lib/postgresql/data
  49. - ../doc/sql:/docker-entrypoint-initdb.d:ro
  50. networks:
  51. - rag-network
  52. healthcheck:
  53. test: ["CMD-SHELL", "pg_isready -U rag_user -d rag_system_dev"]
  54. interval: 10s
  55. timeout: 5s
  56. retries: 5
  57. # Infinity 向量数据库
  58. infinity:
  59. image: infiniflow/infinity:latest
  60. container_name: rag-system-infinity-dev
  61. restart: unless-stopped
  62. ports:
  63. - "23817:23817"
  64. volumes:
  65. - infinity-dev-data:/var/infinity/data
  66. environment:
  67. - TZ=Asia/Shanghai
  68. networks:
  69. - rag-network
  70. # Redis 缓存
  71. redis:
  72. image: redis:7-alpine
  73. container_name: rag-system-redis-dev
  74. restart: unless-stopped
  75. ports:
  76. - "6379:6379"
  77. volumes:
  78. - redis-dev-data:/data
  79. command: redis-server --appendonly yes
  80. networks:
  81. - rag-network
  82. healthcheck:
  83. test: ["CMD", "redis-cli", "ping"]
  84. interval: 10s
  85. timeout: 5s
  86. retries: 5
  87. # pgAdmin(数据库管理工具)
  88. pgadmin:
  89. image: dpage/pgadmin4:latest
  90. container_name: rag-system-pgadmin
  91. restart: unless-stopped
  92. ports:
  93. - "5050:80"
  94. environment:
  95. - PGADMIN_DEFAULT_EMAIL=admin@example.com
  96. - PGADMIN_DEFAULT_PASSWORD=admin
  97. - TZ=Asia/Shanghai
  98. volumes:
  99. - pgadmin-data:/var/lib/pgadmin
  100. networks:
  101. - rag-network
  102. depends_on:
  103. - postgres
  104. volumes:
  105. postgres-dev-data:
  106. driver: local
  107. infinity-dev-data:
  108. driver: local
  109. redis-dev-data:
  110. driver: local
  111. pgadmin-data:
  112. driver: local
  113. networks:
  114. rag-network:
  115. driver: bridge