docker-compose.yml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. services:
  2. # MySQL 数据库
  3. mysql:
  4. image: mysql:8.0
  5. container_name: ai-cs-mysql
  6. environment:
  7. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  8. MYSQL_DATABASE: ${DB_NAME}
  9. MYSQL_USER: ${DB_USER}
  10. MYSQL_PASSWORD: ${DB_PASSWORD}
  11. ports:
  12. - "${MYSQL_PORT}:3306"
  13. volumes:
  14. - mysql_data:/var/lib/mysql
  15. command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  16. healthcheck:
  17. test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
  18. interval: 10s
  19. timeout: 5s
  20. retries: 5
  21. start_period: 30s
  22. networks:
  23. - ai-cs-network
  24. restart: unless-stopped
  25. # 后端服务(本地构建)
  26. backend:
  27. build:
  28. context: ./backend
  29. dockerfile: Dockerfile
  30. env_file:
  31. - ./.env
  32. container_name: ai-cs-backend
  33. environment:
  34. DB_HOST: ${DB_HOST}
  35. DB_PORT: ${DB_PORT}
  36. DB_USER: ${DB_USER}
  37. DB_PASSWORD: ${DB_PASSWORD}
  38. DB_NAME: ${DB_NAME}
  39. ADMIN_USERNAME: ${ADMIN_USERNAME}
  40. ADMIN_PASSWORD: ${ADMIN_PASSWORD}
  41. SERVER_HOST: ${SERVER_HOST}
  42. SERVER_PORT: ${SERVER_PORT}
  43. GIN_MODE: ${GIN_MODE}
  44. ENCRYPTION_KEY: ${ENCRYPTION_KEY}
  45. SERPER_MCP_URL: ${SERPER_MCP_URL}
  46. SERPER_API_KEY: ${SERPER_API_KEY}
  47. MILVUS_HOST: ${MILVUS_HOST}
  48. MILVUS_PORT: ${MILVUS_PORT}
  49. MILVUS_USERNAME: ${MILVUS_USERNAME}
  50. MILVUS_PASSWORD: ${MILVUS_PASSWORD}
  51. MILVUS_DISABLED: ${MILVUS_DISABLED}
  52. VECTOR_STORE_DISABLED: ${VECTOR_STORE_DISABLED}
  53. MILVUS_REQUIRED: ${MILVUS_REQUIRED}
  54. ports:
  55. - "${BACKEND_PORT}:${SERVER_PORT}"
  56. volumes:
  57. - ./backend/uploads:/app/uploads
  58. - ./.env:/app/.env:ro
  59. depends_on:
  60. mysql:
  61. condition: service_healthy
  62. networks:
  63. - ai-cs-network
  64. restart: unless-stopped
  65. # 前端服务(本地构建)
  66. frontend:
  67. build:
  68. context: ./frontend
  69. dockerfile: Dockerfile
  70. args:
  71. NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL}
  72. NEXT_PUBLIC_BACKEND_HOST: ${NEXT_PUBLIC_BACKEND_HOST}
  73. NEXT_PUBLIC_BACKEND_PORT: ${NEXT_PUBLIC_BACKEND_PORT}
  74. NEXT_PUBLIC_MATOMO_CONTAINER_URL: ${NEXT_PUBLIC_MATOMO_CONTAINER_URL}
  75. container_name: ai-cs-frontend
  76. ports:
  77. - "${FRONTEND_PORT}:3000"
  78. depends_on:
  79. - backend
  80. networks:
  81. - ai-cs-network
  82. restart: unless-stopped
  83. volumes:
  84. mysql_data:
  85. driver: local
  86. networks:
  87. ai-cs-network:
  88. driver: bridge