38 lines
950 B
Docker
38 lines
950 B
Docker
# ---------- 构建阶段 ----------
|
|
FROM golang:1.25.3-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
|
|
COPY blacklist.txt /app/blacklist.txt
|
|
|
|
# 运行时定义可覆盖的环境变量(不在构建时生效)
|
|
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 \
|
|
-cache-size 50000 \
|
|
-max-parallel 4 \
|
|
-blacklist-file /app/blacklist.txt"]
|