gpt4 book ai didi

用于 golang 的 Docker 多阶段构建创建大图像

转载 作者:IT王子 更新时间:2023-10-29 02:09:08 25 4
gpt4 key购买 nike

当我在本地为 linux/windows/Mac 构建项目时,我想为我的 gaoling 项目使用多阶段构建我有 12.6 mb 的大小,我目前有一个小的 gaoling CLI 程序。

现在我想构建它,使用 scratch 选项从它构建 lightwhigt docker 图像并构建 as

我使用以下内容,但是当我检查图像时,我看到它的大小 366MB ,知道我在这里遗漏了什么吗?它应该小于 20MB……

#build stage
FROM golang:alpine as builder
WORKDIR /go/src/tzf
ADD . /go/src/tzf
RUN CGO_ENABLED=0 go build -ldflags '-extldflags "-static"' -o ova tzf
RUN apk add --no-cache git



FROM golang:alpine
RUN mkdir /build
ADD . /build/
WORKDIR /build
RUN CGO_ENABLED=0 go build -ldflags '-extldflags "-static"' -o ova tzf
FROM scratch
COPY --from=builder /build/main /app/
WORKDIR /app
CMD [“./ova -v"]

最佳答案

您应该首先使用 golang:alpine 容器来构建应用程序,然后使用 alpine 来运行编译后的应用程序。

像这样:

# builder
FROM golang:alpine AS builder
WORKDIR /go/src/tzf
ADD . /go/src/tzf
RUN CGO_ENABLED=0 go build -ldflags '-extldflags "-static"' -o ova tzf

# runner
FROM alpine
WORKDIR /app
COPY --from=builder /build/main /app/
CMD [“./ova -v"]

应该会产生一个占地面积小的容器。

关于用于 golang 的 Docker 多阶段构建创建大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52357475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com