使用多阶段镜像 本质上是打包与运行期的依赖分离 可以减小最终镜像大小
打包使用800M的 golang:1.23
运行期使用50M的alpine
# Build the manager binary
FROM golang:1.23 as builder
WORKDIR /resbank
# Copy the Go Modules manifests
COPY pkg/ /resbank/pkg
COPY cmd/ /resbank/cmd
COPY vendor/ vendor/
#COPY vendor/ vendor/
COPY go.mod /resbank/go.mod
RUN go env -w GOPROXY=https://goproxy.cn,direct
# Build
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod=vendor -a -o resbank /resbank/cmd/main.go
# Use distroless as minimal base image to package the manager binary
FROM alpine:latest
WORKDIR /
COPY --from=builder /resbank/conf.toml /
#CMD while true; do echo "Container is running..."; sleep 10; done
ENTRYPOINT ["/resbank","/conf.toml"]


被折叠的 条评论
为什么被折叠?



