docker-compose.yml 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. version: '3.8'
  2. services:
  3. web:
  4. build: .
  5. container_name: liaowang-web
  6. ports:
  7. - "5000:5000"
  8. environment:
  9. - DB_HOST=${DB_HOST:-db}
  10. - DB_PORT=${DB_PORT:-5432}
  11. - DB_USER=${DB_USER:-liaowang}
  12. - DB_PASSWORD=${DB_PASSWORD:-liaowang_secret}
  13. - DB_NAME=${DB_NAME:-liaowang_db}
  14. - SECRET_KEY=${SECRET_KEY:-change-me-to-a-random-secret}
  15. - JWT_SECRET_KEY=${JWT_SECRET_KEY:-jwt-secret-change-me-to-random-string}
  16. - SSO_BASE_URL=${SSO_BASE_URL:-http://192.168.92.61:8200}
  17. - SSO_CLIENT_ID=${SSO_CLIENT_ID}
  18. - SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET}
  19. - SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-http://localhost:5000/auth/callback}
  20. - SSO_FRONTEND_URL=${SSO_FRONTEND_URL:-http://localhost:5000}
  21. - SSO_SCOPE=${SSO_SCOPE:-email}
  22. - SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-http://192.168.92.61:9200/login}
  23. env_file:
  24. - .env
  25. depends_on:
  26. db:
  27. condition: service_healthy
  28. volumes:
  29. # 开发模式:挂载代码实现热重载
  30. - .:/app
  31. - /app/venv # 排除虚拟环境目录
  32. restart: unless-stopped
  33. # 健康检查
  34. healthcheck:
  35. test: ["CMD", "curl", "-f", "http://localhost:5000"]
  36. interval: 30s
  37. timeout: 10s
  38. retries: 3
  39. start_period: 15s
  40. db:
  41. image: postgres:16-alpine
  42. container_name: liaowang-db
  43. environment:
  44. POSTGRES_DB: ${DB_NAME:-liaowang_db}
  45. POSTGRES_USER: ${DB_USER:-liaowang}
  46. POSTGRES_PASSWORD: ${DB_PASSWORD:-liaowang_secret}
  47. ports:
  48. - "5432:5432"
  49. volumes:
  50. - postgres_data:/var/lib/postgresql/data
  51. restart: unless-stopped
  52. healthcheck:
  53. test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-liaowang}"]
  54. interval: 10s
  55. timeout: 5s
  56. retries: 5
  57. volumes:
  58. postgres_data: