2 回答

TA貢獻1946條經驗 獲得超4個贊
alpine不提供glibc。alpine之所以這么小,是因為它使用了一個名為musl.libc.org的精簡版 libstdc 。
因此,我們將使用ldd命令檢查靜態鏈接的依賴項。
$ docker run -it <image name> /bin/sh
$ cd /go/bin
$ ldd scratch # or the excutable you are calling-> ldd <executable>
檢查鏈接的靜態文件,它們是否存在于該版本的 alpine 上?如果不從二進制文件的角度來看,它沒有找到文件——并且會報告File not found
.
以下步驟取決于缺少哪些二進制文件,您可以在互聯網上查找如何安裝它們。
添加RUN apk add --no-cache libc6-compat
到您的 Dockerfile 以添加libstdc
一些Golang
基于 alpine 圖像的 Dockerfile。
在您的情況下,解決方案是
禁用 CGO:
CGO_ENABLED=0
在構建時使用或添加
RUN apk add --no-cache libc6-compat
到您的Dockerfile
或不使用
golang:alpine

TA貢獻1805條經驗 獲得超9個贊
我錯誤地用程序要讀取的 txt 文件編譯 go 程序。這就是為什么程序編譯為二進制 exec 后文件路徑不正確的原因。以防萬一有人像我一樣犯了同樣的錯誤,這是我的解決方案之一。我通過將文本文件移出我的項目并使用 env 變量指向我想要的路徑來解決問題。
- 2 回答
- 0 關注
- 106 瀏覽
添加回答
舉報