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 關注
- 134 瀏覽
添加回答
舉報