Docker スクラッチ イメージによる「そのようなファイルまたはディレクトリはありません」エラーのトラブルシューティング
Docker スクラッチ イメージは、コンテナーを実行するための最小限のランタイム環境を提供します。ただし、スクラッチ イメージで Dockerfile を使用すると、「standard_init_linux.go:207: exec user process crashed 'no such file or directory'」というエラーが発生する場合があります。
原因と解決策
このエラーは、CGO ビルドを使用していない場合に発生する可能性があります。 CGO (CGO は「C Go」の略です。Go プログラミングの文脈では、Go プログラム内で C コードを呼び出す機能を指します) ビルドにより、libc や libmusl などのライブラリへの動的リンクが作成されます。この問題を解決するには、次の行を Dockerfile に追加して CGO を無効にします:
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
その他の考慮事項
さらに、次の点を確認してください:
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
以上がDocker Scratch イメージが「そのようなファイルまたはディレクトリはありません」エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。