63 lines
1.7 KiB
Docker
63 lines
1.7 KiB
Docker
# 国内网络优化版 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"] |