Docker を使用すると、「exec /app/backend/server: No such file or directory」というエラー メッセージなどの実行エラーが発生することがあります。このエラーにより、人々はそれを修正する方法について混乱する可能性があります。この問題に対して、PHP エディターの Yuzai は、皆さんのお役に立ちたいと考えて、いくつかの解決策を提供しました。次に、この問題を解決する方法を見てみましょう。
Dockerコンテナを実行しようとして問題が発生しました。 Dockerfile からイメージをビルドしました:
リーリー ###それを実行します: ### リーリー ###エラーが発生しました:### リーリーDocker Desktop から確認すると、コンテナ内にファイルが存在し、あるべき場所に作成されていることがわかります。
2 番目のステージ
FROM golang:1.21-alpineも変更しようとしましたが、やはり同じエラーが発生しました。
gcr.io/distroless/base-debian11 の を使用すると、次のようになります:
リーリー私はここやここを見て、たくさんのことを試しました。私は Docker を初めて使用するため、この問題の解決方法がわかりません。このエラーの原因とその修正方法を理解できる人はいますか?前もって感謝します! 以下は私の Dockerfile です:
docker build -t server -f ./backend/Dockerfile .回避策簡略化した dockerfile
- しなければなりませんでした)どの sqlite ライブラリを使用しているかを推測してください):
backend.go:
ドッカーファイル
:
コンテナ内でシェルを開始します (docker run -it --entrypoint /bin/sh server
) 実行可能ファイルが存在することがわかり、権限は問題ありませんが、実行されません。
「見つかりません」というエラーを見て、ファイルが期待する場所に存在しないか、アクセス許可が間違っていることが原因であると考えるのは簡単です。ただし、実行可能ファイルが依存するものが欠落している場合は、同じエラーが表示されます。 ldd
表示の問題 - 実行可能ファイルは fcntl64
に依存しています; ライブラリは glibc によって提供されていますが、
musl (Alpine で使用される - glibc
と musl
の間の非互換性は 珍しいことではありません
)。
最も簡単な解決策は、実行しているオペレーティング システムと同じオペレーティング システムを使用してアプリケーションをコンパイルすることです。
リーリー
次に、これを実行します (実行可能ファイルからの出力はありませんが、データベースが作成されたことは確認できました):
もう 1 つのオプションは、
純粋な go ライブラリ(CGO は必要ありません) を使用することです。
以上がDocker 実行エラー: exec /app/backend/server: そのようなファイルまたはディレクトリはありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。