Files
AIRouter/backend/Dockerfile.cn
2025-11-10 23:14:15 +08:00

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"]