Docker スクラッチ イメージでの「そのようなファイルまたはディレクトリはありません」: 解決済み
Docker のスクラッチ イメージを使用すると、「no such file or directory」というエラーが発生する場合がありますバイナリを実行するときは、そのようなファイルまたはディレクトリ」を参照してください。このエラーは、イメージ内に存在しないライブラリにバイナリが動的にリンクされていることが原因で発生することがよくあります。
この問題を修正するには、CGO (C Go):
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
CGO リンクを無効にします。システム ライブラリに保存すると、スクラッチ イメージで問題が発生する可能性があります。 CGO を無効にすると、バイナリが静的にリンクされ、外部ライブラリに依存しないことが保証されます。
さらに、ldd:
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
これを使用してバイナリ内の動的リンクを検証できます。コマンドは、バイナリがリンクされているライブラリをリストします。 ldd が「動的実行可能ファイルではない」を返した場合、バイナリは静的にリンクされています。
以上がDocker Scratch Images と Go で「そのようなファイルまたはディレクトリはありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。