[Docker] 이미지 플랫폼 관련 에러(The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) ...)

도커 허브를 통해 ec2 인스턴스에 배포하고자 하였음.

 

Dockerfile 만들고.

 

ec2에 도커 설치하고  systemctl docker start 로 도커를 딱 켜고!

 

도커 허브에서 이미지 땡겨받아서 run만 하면 되는데....!

 

다음과 같은 에러를 만났다..

WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested standard_init_linux.go:228: exec user process caused: exec format error

 

대충 찾아보니.. 현재 내가 쓰고있는 맥북이 Apple M1칩인데 도커가 해당 이미지를 빌드할때 생성된 빌드 플랫폼이 ec2서버와 m1 맥북간의 호환성이 안맞는 문제로 보였다.

 

https://stackoverflow.com/questions/69054921/docker-on-mac-m1-gives-the-requested-images-platform-linux-amd64-does-not-m

 

Docker on Mac M1 gives: "The requested image's platform (linux/amd64) does not match the detected host platform"

I want to run a docker container for Ganache on my MacBook M1, but get the following error: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) a...

stackoverflow.com

 

스프링 부트에서 도커이미지를 빌드할때

 

Gradle

docker build --build-arg DEPENDENCY=build/dependency -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)

 

Maven

docker build -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)

 

다음과 같이 빌드하게 되는데 여기서 한가지 키워드를 추가해주면 된다.

 

(물론 각 배포서버마다의 환경이 다를테니 해당 메시지가 뜬다면 필자같은 경우는 요청 이미지플랫폼(로컬에서 빌드한 이미지)이 linux/arm64/v8 이므로 이를 linux/amd64 플랫폼 형태의 이미지로 빌드해야한다는 것이다.)

 

--platform linux/amd64

결론

 

 

Gradle

docker build --platform amd64 --build-arg DEPENDENCY=build/dependency -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)

 

Maven

docker build --platform amd64 -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)

댓글

Designed by JB FACTORY