事象
M1 Macでdockerのビルドを実行したときに以下のエラーが出ました。
$ docker-compose build
open /Users/{user_name}/.docker/buildx/current: permission denied
結論
該当ファイルをオーナー変更してから docker-compose build
すべし!
$ sudo chown -R {user_name} ~/.docker/buildx/current
解決までのメモ
エラーメッセージでググってすぐに出てくる記事がこちら。
なるほどと思って、以下を実行してから再度トライ。
$ export DOCKER_BUILDKIT=0
$ docker-compose build
...(中略)
no matching manifest for linux/arm64/v8 in the manifest list entries
このエラーで検索すると、 platform: linux/amd64
を付けよう、って記事が多数ヒットするんですが、今回の環境では既に付けてます。
M1 Macに移行したときにこのエラーには何度もお世話になったので、M1起因の問題かなと思ってそちら方面で調べ始めてハマってしまいました。
最初のエラーでもう一度ググり直したところ、ようやく以下の記事に辿り着きました。("7"って何よ...(スクショ参照))
確かに権限を確認してみると、 root
になってる!
$ ll ~/.docker/buildx
total 8
drwx------ 2 {user_name} staff 64 5 17 12:19 activity
-rw------- 1 root staff 48 5 23 04:29 current
drwx------ 2 {user_name} staff 64 11 29 12:18 defaults
drwx------ 2 {user_name} staff 64 11 29 12:18 instances
記事の通り、ファイルオーナーを変更。
$ sudo chown -R {user_name} ~/.docker/buildx/current
これで無事に docker-compose build
が成功しました!
おわりに
すごく遠回りしてしまいましたが、 permission denied
なんだから、該当ファイルの権限を見に行けばすぐに気づけそうな問題でした...。(脳死でエラー文言で検索しちゃってました)
この問題の記事が全然出てこなかったのも、これでハマる人はあまりいないのかもですが、誰かの役に立てばと思います。