File size: 3,887 Bytes
49c44b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Spring Boot 生产配置示例(对接 SQLPub MySQL + Upstash Redis + CloudFlare DDNS)
#
# 使用方法:
# 1. 复制到 src/main/resources/application.yml
# 2. 敏感信息(密码/token)通过环境变量注入,不要硬编码
# 3. HuggingFace Space 在 Settings → Repository secrets 里配置环境变量

spring:
  application:
    name: hf-springboot-demo

  # ========== SQLPub MySQL ==========
  datasource:
    url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:test}?useSSL=true&serverTimezone=UTC&characterEncoding=utf8
    username: ${DB_USER:root}
    password: ${DB_PASSWORD:password}
    driver-class-name: com.mysql.cj.jdbc.Driver

    # HikariCP 连接池配置
    hikari:
      maximum-pool-size: 10               # SQLPub 免费限 100 连接,单容器 10 足够
      minimum-idle: 2
      connection-timeout: 30000           # 30 秒超时(外网 DB 延迟高)
      idle-timeout: 600000                # 10 分钟空闲回收
      max-lifetime: 1800000               # 30 分钟最大生命周期
      leak-detection-threshold: 60000     # 检测连接泄漏

  # ========== JPA(可选,如果用 ORM)==========
  jpa:
    hibernate:
      ddl-auto: validate                  # 生产用 validate(不自动改表结构)
      # ddl-auto: update                  # 开发用 update(自动建表/改字段)
    show-sql: false                       # 生产关闭 SQL 日志
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
        format_sql: true
        use_sql_comments: false

  # ========== Upstash Redis ==========
  redis:
    host: ${REDIS_HOST:localhost}
    port: ${REDIS_PORT:6379}
    password: ${REDIS_PASSWORD:}
    timeout: 5000                         # 5 秒超时
    database: 0

    # Lettuce 连接池配置
    lettuce:
      pool:
        max-active: 8                     # 最大活跃连接
        max-idle: 4                       # 最大空闲连接
        min-idle: 1                       # 最小空闲连接
        max-wait: 3000                    # 最大等待时间(ms)

    # 如果用 Jedis 替代 Lettuce:
    # jedis:
    #   pool:
    #     max-active: 8
    #     max-idle: 4
    #     min-idle: 1

# ========== Server 配置 ==========
server:
  port: 7860                              # HuggingFace Space 要求
  address: 0.0.0.0                        # 监听所有网卡(容器必需)
  compression:
    enabled: true                         # 开启 Gzip 压缩
    mime-types: application/json,text/html,text/css,application/javascript
  tomcat:
    threads:
      max: 200                            # 最大线程数
      min-spare: 10                       # 最小空闲线程

# ========== Logging ==========
logging:
  level:
    root: INFO
    com.example.hfspace: DEBUG            # 应用包日志级别
    org.springframework.web: INFO
    org.hibernate.SQL: ${SQL_LOG_LEVEL:WARN}  # 生产关 SQL 日志,开发改 DEBUG
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

# ========== CloudFlare DDNS 配置(可选)==========
cf:
  zone-id: ${CF_ZONE_ID:}                 # CloudFlare Zone ID
  api-token: ${CF_API_TOKEN:}             # API Token(Zone.DNS Edit 权限)
  record-id: ${CF_RECORD_ID:}             # DNS Record ID(A 记录)

hf:
  space-url: ${HF_SPACE_URL:}             # HF Space 完整域名(如 username-spacename.hf.space)

# ========== 应用自定义配置 ==========
app:
  name: HF Spring Boot Demo
  version: 1.0.0

  # Redis 缓存 TTL(秒)
  cache:
    default-ttl: 1800                     # 30 分钟
    user-session-ttl: 3600                # 1 小时

  # 限流配置(基于 Redis)
  rate-limit:
    enabled: ${RATE_LIMIT_ENABLED:true}
    requests-per-minute: ${RATE_LIMIT_RPM:60}  # 每分钟 60 次请求