ホームページ >バックエンド開発 >Golang >Docker の Go Web アプリが「standard_init_linux.go:190: exec user process原因の「no such file or directory」」で失敗するのはなぜですか?

Docker の Go Web アプリが「standard_init_linux.go:190: exec user process原因の「no such file or directory」」で失敗するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-14 22:20:18352ブラウズ

Why Does My Go Web App in Docker Fail with

Docker イメージ エラー: "standard_init_linux.go:190: Go Web App の実行時に実行ユーザー プロセスにより "そのようなファイルまたはディレクトリはありません" が発生しました

このエラー メッセージは、Docker イメージが指定されたユーザー プロセスを見つけられない、または実行できないことを示しています。問題の原因は依存関係の欠落または不適切なコンパイルです。

Go Web アプリを構築するときは、webapp.go ファイルが net パッケージなどの必要なパッケージをインポートしていることを確認してください。また、net インポートには、動的にリンクされたバイナリとしてデフォルトで libc が含まれている可能性があります。 Docker イメージに欠落しています。

この問題を解決するには、次のコンパイル パラメータを使用します。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w' -o mybin *.go

次のように指定します。 CGO_ENABLED=0 の場合、CGO (C 関数を呼び出す Go のメカニズム) が無効になり、純粋な Go コンパイルが強制され、GOOS=linux および GOARCH=amd64 はターゲット プラットフォームとアーキテクチャを示します。 -a は、静的にリンクされたバイナリを構築します。 -ldflags '-w' はバイナリから不要な情報を削除します。

これらのパラメータを使用して再コンパイルした後、Docker イメージをビルドして実行します。 それ。これでエラーは解決され、Web アプリはコンテナ内で正しく機能するはずです。

以上がDocker の Go Web アプリが「standard_init_linux.go:190: exec user process原因の「no such file or directory」」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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