문제 개요.
Spring boot Health-check-router 를 만든 후 Docker images 를 말아 Docker Hub Repository 에 올렸다.
그후 EC2 에서 해당 Image 를 PULL 한 후 RUN 으로 image 실행을 진행하였다.
위 결과는 아래와 같다.
위 오류는 image 플렛폼 호환성 문제이다.
linus/arm64/v8. <====> linux/amd64/v3
필자는 MacOS 환경에서 Spring boot gradle build 와 docker build 로 Spring Boot image 를 만들었다.
Apple M1 칩에서 도커로 해당 이미지를 빌드할때 생성된 빌드 플랫폼이 EC2 서버와 호환이 안맞는 문제이다.
필자는 docker build 할때 단순하게 "docker build -t docker_hub_id/docker_img_name ." 로 빌드를 진행했다.
이부분이 문제이다.
mac 으로 docker build 를 할때는 조금더 디테일한 정보가 필요하다.
Gradle
docker build --platform [배포될 플렛폼 형태] --build-arg DEPENDENCY=build/dependency -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)
Maven
docker build --platform [배포될 플렛폼 형태] -t 도커허브아이디/도커허브 Repository 명 . (끝에 .까지가 명령어입니다.)
필자의 경우 배포될 플렛폼 형태는 : linux/amd64/v3 이다.
참고자료
https://sas-study.tistory.com/425
[Docker] 이미지 플랫폼 관련 에러(The requested image's platform (linux/arm64/v8) does not match the detected host plat
도커 허브를 통해 ec2 인스턴스에 배포하고자 하였음. Dockerfile 만들고. ec2에 도커 설치하고 systemctl docker start 로 도커를 딱 켜고! 도커 허브에서 이미지 땡겨받아서 run만 하면 되는데....! 다음과
sas-study.tistory.com