2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
CGO_ENABLED=0
當(dāng)在 Go 中使用網(wǎng)絡(luò)時(shí),您需要編譯以防止在 Linux 上鏈接到 libc。Alpine 附帶 musl 而不是 libc,并且嘗試查找 libc 會(huì)導(dǎo)致沒有這樣的文件或目錄錯(cuò)誤。您可以通過運(yùn)行ldd main
查看動(dòng)態(tài)鏈接來驗(yàn)證這一點(diǎn)。
您還可以在基于 Alpine 的主機(jī)上構(gòu)建以鏈接到 musl 而不是 libc。完全靜態(tài)編譯的二進(jìn)制文件的優(yōu)點(diǎn)是能夠從頭開始運(yùn)行,根本不需要任何庫。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
go 編譯為本機(jī)代碼,因此請確保在 Docker 映像上構(gòu)建您的 go 代碼,而不是將二進(jìn)制文件復(fù)制到 docker 映像。
例如
FROM golang:1.11-alpine
WORKDIR /app
ADD . /app
RUN cd /app && go build -o goapp
ENTRYPOINT ./goapp
另外作為獎(jiǎng)勵(lì),這里是如何使用多階段 Docker 構(gòu)建創(chuàng)建非常小的 Docker 鏡像:
FROM golang:1.11-alpine AS build-env
ADD . /src
RUN cd /src && go build -o goapp
FROM alpine
WORKDIR /app
COPY --from=build-env /src/goapp /app/
ENTRYPOINT ./goapp
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)