Dockerfile 949 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # 构建阶段
  2. FROM golang:1.19-alpine AS builder
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 安装必要的包
  6. RUN apk add --no-cache git
  7. # 复制go mod文件
  8. COPY go.mod go.sum ./
  9. # 下载依赖
  10. RUN go mod download
  11. # 复制源代码
  12. COPY . .
  13. # 构建应用
  14. RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main cmd/server/main.go
  15. # 运行阶段
  16. FROM alpine:latest
  17. # 安装ca证书
  18. RUN apk --no-cache add ca-certificates
  19. # 创建非root用户
  20. RUN addgroup -g 1001 -S appgroup && \
  21. adduser -u 1001 -S appuser -G appgroup
  22. # 设置工作目录
  23. WORKDIR /app
  24. # 从构建阶段复制二进制文件
  25. COPY --from=builder /app/main .
  26. # 复制配置文件和静态资源
  27. COPY --from=builder /app/config ./config
  28. COPY --from=builder /app/web ./web
  29. # 创建必要的目录
  30. RUN mkdir -p uploads logs && \
  31. chown -R appuser:appgroup /app
  32. # 切换到非root用户
  33. USER appuser
  34. # 暴露端口
  35. EXPOSE 8080
  36. # 运行应用
  37. CMD ["./main"]