docker-compose.yml 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. services:
  2. # PostgreSQL 数据库
  3. postgres:
  4. image: postgres:15-alpine
  5. container_name: maas-postgres
  6. restart: unless-stopped
  7. environment:
  8. POSTGRES_USER: ${DB_USER:-postgres}
  9. POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres123}
  10. POSTGRES_DB: ${DB_NAME:-aigcspace_test}
  11. ports:
  12. - "${DB_PORT_EXTERNAL:-5433}:5432"
  13. volumes:
  14. - postgres_data:/var/lib/postgresql/data
  15. - ./backend/aigcspace_clean.sql:/docker-entrypoint-initdb.d/init.sql
  16. healthcheck:
  17. test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres}"]
  18. interval: 10s
  19. timeout: 5s
  20. retries: 5
  21. # Redis 缓存
  22. redis:
  23. image: redis:7-alpine
  24. container_name: maas-redis
  25. restart: unless-stopped
  26. command: redis-server --requirepass ${REDIS_PASSWORD:-redis123}
  27. ports:
  28. - "${REDIS_PORT_EXTERNAL:-6380}:6379"
  29. volumes:
  30. - redis_data:/data
  31. healthcheck:
  32. test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redis123}", "ping"]
  33. interval: 10s
  34. timeout: 5s
  35. retries: 5
  36. # 后端服务
  37. backend:
  38. build:
  39. context: ./backend
  40. dockerfile: Dockerfile
  41. container_name: maas-backend
  42. restart: unless-stopped
  43. ports:
  44. - "${BACKEND_PORT:-8010}:8010"
  45. environment:
  46. - DB_HOST=postgres
  47. - DB_PORT=5432
  48. - DB_USER=${DB_USER:-postgres}
  49. - DB_PASSWORD=${DB_PASSWORD:-postgres123}
  50. - DB_NAME=${DB_NAME:-aigcspace_test}
  51. - REDIS_URL=redis://redis:6379
  52. - REDIS_PASSWORD=${REDIS_PASSWORD:-redis123}
  53. - ENCRYPTION_KEY=${ENCRYPTION_KEY:-wxcz-aigc-default-encryption-key}
  54. - DB_POOL_SIZE=2
  55. - DB_MAX_OVERFLOW=1
  56. - GUNICORN_WORKERS=2
  57. - APP_HOST=0.0.0.0
  58. - APP_PORT=8010
  59. - DEBUG=${DEBUG:-false}
  60. # SSO 配置
  61. - SSO_BASE_URL=${SSO_BASE_URL:-http://192.168.92.61:8200}
  62. - SSO_CLIENT_ID=${SSO_CLIENT_ID:-0SkYt2YdRx5xZjuMO15eWn6v4Dpz9UVr}
  63. - SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET:-GA7lJ9VnSLChF9uyms9E1sa899X3Ht1dvgZ0eFARuFSM1xTIfsnlPToWBMY17j5T}
  64. - SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-http://192.168.92.150/api/oauth/callback}
  65. - SSO_ADMIN_REDIRECT_URI=${SSO_ADMIN_REDIRECT_URI:-http://192.168.92.150/api/admin/oauth/callback}
  66. - SSO_SCOPE=${SSO_SCOPE:-profile email}
  67. - SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-http://192.168.92.61:9200/login}
  68. depends_on:
  69. postgres:
  70. condition: service_healthy
  71. redis:
  72. condition: service_healthy
  73. volumes:
  74. - backend_logs:/app/logs
  75. - ./backend/data:/app/data
  76. # Nginx 同时服务用户端前端和管理后台
  77. nginx:
  78. build:
  79. context: .
  80. dockerfile: Dockerfile
  81. container_name: maas-nginx
  82. restart: unless-stopped
  83. ports:
  84. - "${NGINX_PORT:-80}:80"
  85. depends_on:
  86. - backend
  87. volumes:
  88. postgres_data:
  89. redis_data:
  90. backend_logs: