FROM golang:1.23 AS builder WORKDIR /workspace # 创建临时目录结构 RUN mkdir -p modules/k8s # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum # 禁用所有代理 ENV HTTP_PROXY="" ENV HTTPS_PROXY="" ENV http_proxy="" ENV https_proxy="" ENV GOPROXY=https://goproxy.cn,direct # 下载依赖 RUN go mod download # Copy the Go source code COPY modules/k8s/ modules/k8s/ # Build the controller-manager binary RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o controller-manager modules/k8s/cmd/controller-manager/controller-manager.go # Build a small image FROM alpine:3.18 WORKDIR / # 创建非 root 用户 RUN addgroup -g 65532 nonroot && \ adduser -u 65532 -G nonroot -D nonroot COPY --from=builder /workspace/modules/k8s/controller/ modules/k8s/controller/ COPY --from=builder /workspace/controller-manager . USER 65532:65532 ENTRYPOINT ["/controller-manager"] # $ docker build -t devstar-controller-manager:latest -f modules/k8s/Dockerfile.controller-manager .