# 国内网络优化版 Dockerfile # 使用国内镜像源和代理加速构建 # 第一阶段:构建 Go 应用 FROM golang:1.24-bookworm AS builder WORKDIR /app # 配置 Go 模块代理(使用国内镜像源) ENV GO111MODULE=on \ GOPROXY=https://goproxy.cn,https://goproxy.io,https://mirrors.aliyun.com/goproxy/,direct \ GOSUMDB=sum.golang.google.cn \ CGO_ENABLED=1 # 复制 go mod 文件 COPY go.mod go.sum ./ # 下载依赖 RUN go mod download && go mod verify # 复制源代码 COPY . . # 编译应用(添加优化参数减小二进制文件大小) RUN go build -ldflags="-w -s" -o gateway main.go # 第二阶段:创建运行时镜像 FROM debian:bookworm-slim # 使用清华大学镜像源替换默认的 Debian 源 RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \ apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ wget \ tzdata && \ rm -rf /var/lib/apt/lists/* # 设置时区为上海 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone WORKDIR /app # 从构建阶段复制编译好的二进制文件 COPY --from=builder /app/gateway . # 创建数据目录 RUN mkdir -p /app/data # 设置环境变量 ENV DB_PATH=/app/data/gateway.db # 暴露端口 EXPOSE 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8080/api/providers || exit 1 # 运行应用 CMD ["./gateway"]