ホームページ  >  記事  >  バックエンド開発  >  Docker 実行エラー: exec /app/backend/server: そのようなファイルまたはディレクトリはありません

Docker 実行エラー: exec /app/backend/server: そのようなファイルまたはディレクトリはありません

WBOY
WBOY転載
2024-02-08 21:21:181113ブラウズ

Docker 运行错误:exec /app/backend/server:没有这样的文件或目录

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

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。