도커 허브를 통해 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 맥북간의 호환성이 안맞는 문제로 보였다.
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 명 . (끝에 .까지가 명령어입니다.)
'docker' 카테고리의 다른 글
[Docker] 스프링부트를 docker 이미지를 통해서 AWS EC2에 배포하기(DockerHub) (5) | 2021.02.16 |
---|---|
windows OS에서 Docker Desktop 설치하기 (0) | 2021.02.14 |