| # Build stage | |
| FROM golang:1.24-alpine AS builder | |
| # 安装构建依赖 | |
| RUN apk --no-cache add git ca-certificates tzdata | |
| WORKDIR /app | |
| # 复制依赖文件 | |
| COPY go.mod go.sum ./ | |
| # 下载依赖(如果有的话) | |
| RUN go mod download | |
| # 复制源代码 | |
| COPY . . | |
| # 构建应用 | |
| RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o main . | |
| # Final stage | |
| FROM alpine:latest | |
| # 安装运行时依赖 | |
| RUN apk --no-cache add ca-certificates tzdata && \ | |
| cp /usr/share/zoneinfo/Pacific/Auckland /etc/localtime && \ | |
| echo "Pacific/Auckland" > /etc/timezone | |
| WORKDIR /app | |
| # 从构建阶段复制二进制文件 | |
| COPY --from=builder /app/main . | |
| # 创建非root用户 | |
| RUN addgroup -g 1000 appuser && \ | |
| adduser -D -u 1000 -G appuser appuser && \ | |
| chown -R appuser:appuser /app | |
| USER appuser | |
| # Labels | |
| LABEL maintainer="k2" | |
| LABEL description="K2Think OpenAI Compatible API" | |
| LABEL version="1.0.0" | |
| # 暴露端口 | |
| EXPOSE 7860 | |
| # 运行应用 | |
| CMD ["./main"] | |