Kesalahan "no match for platform in manifest"
Chip M1 dan M2 dari Apple, yang berbasis arsitektur ARM, telah terbukti menjadi perubahan besar dalam dunia komputasi. Namun, arsitektur baru ini juga membawa masalah kompatibilitas tertentu, terutama saat menggunakan perangkat lunak yang awalnya dirancang untuk platform x86-64. Salah satu masalah seperti itu muncul ketika Anda mencoba membangun gambar Docker di Mac M1/M2.
Jika Anda menjalankan Dockerfile berikut dengan perintah docker build .
:
FROM <your image>:latest
Anda kemungkinan akan menghadapi pesan kesalahan berikut:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:8531053692ea6f2876d103be6756e2fbdba8b2332303d88ac03da26455332566: not found
Kesalahan ini pada dasarnya mengindikasikan bahwa Docker tidak dapat menemukan platform yang kompatibel untuk hash manifest SHA-256 yang diberikan. Ini terjadi terutama karena ketidakcocokan antara platform yang Anda gunakan dan platform yang digunakan untuk membangun gambar Docker.
Solusi
Docker menyediakan opsi --platform
yang memungkinkan Anda untuk menentukan platform target untuk gambar Anda. Dengan menggunakan opsi ini, Anda memberi instruksi kepada Docker untuk menarik atau membangun gambar yang kompatibel dengan arsitektur yang ditentukan. Misalnya, jika Anda menghadapi masalah ini di Mac M1/M2 dan Anda perlu membangun gambar untuk platform linux/amd64
, Anda dapat menggunakan perintah berikut:
$ docker build --platform linux/amd64 .
Perintah ini memaksa Docker untuk mencari manifest gambar yang kompatibel dengan platform linux/amd64
, sehingga efektif mengatasi masalah "no match for platform in manifest".
Jika Anda menggunakan Docker Compose untuk mengelola aplikasi multi-container, Anda dapat menentukan platform di file docker-compose.yml
. Berikut adalah caranya:
services:
hoge:
platform: linux/amd64
Konfigurasi ini memberitahu Docker Compose bahwa layanan hoge
harus dijalankan menggunakan gambar yang dibangun untuk platform linux/amd64
.