「docker-compose up -d」でエラー

この記事は約3分で読めます。

以下、作業用メモです。

ERROR [ 2/12] COPY composer.json /var/www/failed to solve: failed to compute cache key: “/composer.json” not found: not found

Dockerがcomposer.jsonというファイルを見つけられないために発生した。
Dockerfileで指定されたパスにそのファイルが存在しないか、またはファイル名が間違っている可能性がある。。。。

ただし、docker-compose.ymlファイルでは

と設定しているので、ホストのカレントディレクトリ(.)がコンテナの/var/www/ディレクトリにマウントされている。
したがって、ホストのカレントディレクトリにcomposer.jsonが存在する必要がある。
場所を確認しプロジェクトディレクトリ直下にcomposer.jsonを作成することで解決。

no matching manifest for linux/arm64/v8 in the manifest list entries

このエラーは、Dockerがイメージをプルしようとしたときに、そのイメージがユーザーのシステムアーキテクチャ(この場合はlinux/arm64/v8)に対応していないことを示している。

具体的には、Dockerイメージは特定のCPUアーキテクチャ(例えば、amd64、arm64、armv7など)向けにビルドされ、それぞれのアーキテクチャ向けのバージョンがDocker Hubに格納されている。しかし、すべてのイメージがすべてのアーキテクチャをサポートしているわけではない。したがって、あるアーキテクチャ向けのイメージをプルしようとすると、そのイメージが存在しない場合にこのエラーが発生する。

この問題を解決する一つの方法は、docker-compose.ymlファイルにplatform: linux/x86_64を追加すること。これにより、Dockerはx86_64アーキテクチャ向けのイメージをプルするようになる。ただし、この方法が機能するためには、システムがx86_64のバイナリを実行できる必要がある。AppleのM1チップのようなARMベースのシステムでは、Rosetta 2を使用してx86_64のバイナリを実行できる。

以下、docker-compose.ymlファイルにplatform: linux/x86_64を追加する例:

この変更を加えた後、再度docker-compose up -dコマンドを実行。

【参考サイト】

タイトルとURLをコピーしました