| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # 构建阶段
- FROM golang:1.19-alpine AS builder
- # 设置工作目录
- WORKDIR /app
- # 安装必要的包
- RUN apk add --no-cache git
- # 复制go mod文件
- COPY go.mod go.sum ./
- # 下载依赖
- RUN go mod download
- # 复制源代码
- COPY . .
- # 构建应用
- RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main cmd/server/main.go
- # 运行阶段
- FROM alpine:latest
- # 安装ca证书
- RUN apk --no-cache add ca-certificates
- # 创建非root用户
- RUN addgroup -g 1001 -S appgroup && \
- adduser -u 1001 -S appuser -G appgroup
- # 设置工作目录
- WORKDIR /app
- # 从构建阶段复制二进制文件
- COPY --from=builder /app/main .
- # 复制配置文件和静态资源
- COPY --from=builder /app/config ./config
- COPY --from=builder /app/web ./web
- # 创建必要的目录
- RUN mkdir -p uploads logs && \
- chown -R appuser:appgroup /app
- # 切换到非root用户
- USER appuser
- # 暴露端口
- EXPOSE 8080
- # 运行应用
- CMD ["./main"]
|