次のように go アプリケーションを構築しようとしています。main.go ファイルは cmd/app/main.go にあります。
しかし、docker build --no-cache .
を実行しようとすると、docker は <container_id>
を実行します。
exec ./bin/app: No such file or directory
go build -o ./bin/app ./cmd/app
を実行してテストしたところ、 ./bin/app
は正しく実行できました。
これは私の dockerfile です
リーリーコンテナにアクセスしようとします docker run -it -t fyno/server/multi /bin/sh
この問題を解決するにはどうすればよいですか?
No such file or directory エラーが発生します。
私は最小限の
dockerfile サンプルを作成し、
app バイナリの名前を変更しました。これは、サンプルの
app ディレクトリにあったため、混乱を引き起こしました。今ではもっと意味が分かると思います。
dockerfile のパスの不正確さを修正した後、go バイナリを実行しようとすると、さらに微妙な問題が発生します:
Not found because golang The Builder image is using debian glibc 2.31-13 deb11u5 2.31 およびランナー イメージは musl libc (x86_64) を使用しています
バージョン 1.2.2。
cgo_enabled=0 を設定することです。
cgo でコンパイルしたい場合は、この点で互換性のあるビルダーおよびランナー イメージを見つけてください。
同様の問題に対して、
ここでいくつかの代替案と回避策が提供されています。
.env ファイルについても言及されていたため、
docker run --env を使用するための単純な読み取り表示を mvp に追加しました。 .. 挿入された環境変数。
リーリー
dockerfile:
リーリー
main.go:
リーリー
リーリー リーリー
以上がDocker のマルチステージ ビルドを使用して go binary を実行できないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。