2 回答
TA贡献1796条经验 获得超4个赞
您应该首先使用一个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"]
应该会产生一个占地面积小的容器。
TA贡献2016条经验 获得超9个赞
当您构建最终图像时,请注意只复制您希望最终出现在图像中的确切文件。在这里让您的二进制文件成为图像的 ENTRYPOINT 是有意义的,因为实际上您无法用它做任何其他事情。
我可能会像这样制作一个两阶段管道:
# size of this stage doesn't matter; use the standard image
FROM golang AS builder
WORKDIR /go/src/tzf
ADD . ./
RUN CGO_ENABLED=0 go build -ldflags '-extldflags "-static"' -o /ova tzf
FROM scratch
# only copy the one file, may as well put it in /
COPY --from=builder /ova /ova
ENTRYPOINT ["/ova"]
# if you want to launch it with default options, you can
# CMD ["-v"]
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报