Files
dot/Dockerfile
aixiao 3cf657bb62 feat(docker): 支持通过构建参数注入编译时间
在 Dockerfile 中添加 BUILD_DATE 构建参数,并通过 ldflags 将编译时间注入到二进制文件中。
同时更新 build.sh 脚本,在构建镜像时传入当前时间作为 BUILD_DATE 参数。

refactor(build): 优化 build.sh 脚本结构与可读性

对 build.sh 脚本中的函数进行了缩进统一和结构调整,提高代码可读性和维护性。
新增 bin 命令用于直接编译并压缩二进制文件。

feat(main): 添加版本与构建信息显示功能

在 main.go 中增加 BuildDate 变量用于存储构建时间,并支持通过 -h 或 --help 参数查看帮助信息,
包括版本号、联系邮箱以及构建日期等元数据。

chore(blacklist): 移除默认黑名单条目

从 blacklist.txt 文件中移除默认的 *.baidu.com 黑名单规则。

docs(readme): 清理 README.md 文件末尾空行

删除 README.md 文件最后多余的空白行,保持文档整洁。
2025-10-15 15:16:09 +08:00

35 lines
851 B
Docker

# ---------- 构建阶段 ----------
FROM golang:1.25.2-alpine AS builder
WORKDIR /app
COPY . .
# 使用构建参数传递编译时间
ARG BUILD_DATE
ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64
RUN go build -a -ldflags "-X main.BuildDate=${BUILD_DATE} -extldflags '-static -lc'"
# ---------- 运行阶段 ----------
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"]