sdk_generate/Dockerfile

67 lines
1.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# 阶段1: 构建
# ============================================================
FROM golang:1.26-alpine AS builder
WORKDIR /app
# 安装构建工具
RUN apk add --no-cache git make
# 配置 Go 代理(国内加速)
ENV GOPROXY=https://goproxy.cn,https://goproxy.io,direct
ENV GOSUMDB=sum.golang.google.cn
# 复制依赖文件并下载
COPY go.mod go.sum ./
RUN go mod download && go mod verify
# 复制全部源码
COPY . .
# 编译二进制文件
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-ldflags="-s -w" \
-o /app/sdk-generator \
.
# ============================================================
# 阶段2: 运行
# ============================================================
FROM alpine:latest
# 安装运行时依赖
RUN apk add --no-cache ca-certificates tzdata
# 创建非 root 用户
RUN adduser -D -g '' appuser
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 设置工作目录
WORKDIR /app
# 复制二进制文件
COPY --from=builder /app/sdk-generator /app/sdk-generator
# 复制静态文件web 目录)
COPY --chown=appuser:appuser ./web /app/web
# 创建数据目录并设置权限
RUN mkdir -p /app/outputs /app/uploads && \
chown -R appuser:appuser /app
# 切换到非 root 用户
USER appuser
# 暴露端口
EXPOSE 5002
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:5002/health || exit 1
# 启动应用
ENTRYPOINT ["/app/sdk-generator"]