```
feat(cache): 引入 LRU 缓存并优化缓存清理与 TTL 处理 - 使用 github.com/hashicorp/golang-lru/v2 替代原生 sync.Map 实现 LRU 缓存 - 修复缓存读写过程中的并发安全问题,使用 RWMutex 保护共享状态 - 调整缓存键结构注释,明确支持 TTL 和 LRU 策略 - 优化负面缓存 TTL 计算逻辑,更准确识别 NODATA 场景 - 在缓存写入前统一剥离伪 RR(如 OPT、TSIG) - 增加 cache-size 命令行参数,支持配置 LRU 缓存最大条目数 - 移除旧的缓存清理协程中不必要的全量遍历逻辑 - 更新日志输出内容,包含 cache-size 配置项 ```
This commit is contained in:
32
Dockerfile
Normal file
32
Dockerfile
Normal file
@@ -0,0 +1,32 @@
|
||||
# ---------- 构建阶段 ----------
|
||||
FROM golang:1.25.2-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64
|
||||
RUN go build -o dot main.go
|
||||
|
||||
# ---------- 运行阶段 ----------
|
||||
FROM alpine:3.20
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 只复制编译好的二进制,不再打包证书
|
||||
COPY --from=builder /app/dot /app/dot
|
||||
|
||||
# 运行时定义可覆盖的环境变量(不在构建时生效)
|
||||
ENV CERT_FILE=aixiao.me.cer
|
||||
ENV KEY_FILE=aixiao.me.key
|
||||
|
||||
EXPOSE 853/tcp
|
||||
|
||||
# 启动命令,使用运行时传入的证书路径
|
||||
ENTRYPOINT ["sh", "-c", "./dot \
|
||||
-cert ${CERT_FILE} \
|
||||
-key ${KEY_FILE} \
|
||||
-addr :853 \
|
||||
-upstream \"119.29.29.29:53,223.5.5.5:53,114.114.114.114:53\" \
|
||||
-cache-ttl 300s \
|
||||
-timeout 3s \
|
||||
-max-parallel 3"]
|
||||
Reference in New Issue
Block a user