도커 허브를 통해 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 맥북간의 호환성이 안맞는 문제로 보였다.
스프링 부트에서 도커이미지를 빌드할때
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 |