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