ホームページ >バックエンド開発 >Golang >Docker Scratch Images と Go で「そのようなファイルまたはディレクトリはありません」エラーを解決する方法

Docker Scratch Images と Go で「そのようなファイルまたはディレクトリはありません」エラーを解決する方法

DDD
DDDオリジナル
2024-12-15 11:09:11153ブラウズ

How to Resolve

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。