2 回答
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
您應(yīng)該首先使用一個(gè)golang:alpine容器來構(gòu)建應(yīng)用程序,然后使用一個(gè)容器alpine來運(yùn)行編譯后的應(yīng)用程序。
是這樣的:
# 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"]
應(yīng)該會(huì)產(chǎn)生一個(gè)占地面積小的容器。
TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)您構(gòu)建最終圖像時(shí),請(qǐng)注意只復(fù)制您希望最終出現(xiàn)在圖像中的確切文件。在這里讓您的二進(jìn)制文件成為圖像的 ENTRYPOINT 是有意義的,因?yàn)閷?shí)際上您無法用它做任何其他事情。
我可能會(huì)像這樣制作一個(gè)兩階段管道:
# 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 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)
