본문 바로가기
DEVOPS

aarch64 아키텍쳐에서 redash 설치 실패기 -> 성공기

by DanteMustDie 2023. 11. 20.
728x90

redash는 CPU 명령어세트 아키텍쳐가 x86_64를 대상으로 디폴트 지정되어있어 오라클 a1 인스턴스나 일부 맥북 환경에서는 docker-compose, docker pull 등을 이용해 다운받아 설치를 하여도 이용이 불가능하다.

이를 설치하여 사용하려면 별도로 redash의 깃허브에서 clone을 받아 dockerfile 멀티플랫폼 빌드 과정을 거쳐야 한다.

git clone으로 redash를 받고나면 다음과 같이 디렉토리가 잡힌다.

vi Dockerfile 명령어를 이용해 빌드 세팅을 확인하면 linux/amd64일때 대해서만 스크립트가 적혀져있다. 이를 해결하기 위해선 기본 빌드를 해서는 안되고, buildx 라는 멀티아키텍쳐 플랫폼 빌더를 별도로 사용해야 한다.

$ docker buildx create --name mybuilder
mybuilder
$ docker buildx use mybuilder
$ docker buildx build --platform linux/aarch64,linux/arm64,linux/amd64 -t redash -f /redash/Dockerfile redash

명령어를 그냥 실행하면 현재 사용중인 도커 드라이버가 멀티플랫폼 빌드를 지원하지 않는다고 나온다.

이해가 어렵다면 빌드 프로파일이 멀티 플랫폼 빌드와 부적합해서 발생하는 일이라고 이해하면 된다.

buildx를 사용하려면 build profile을 하나 만들어주어야 한다.

$ pwd
/home/ubuntu/redash
$ docker buildx build --platform linux/aarch64,linux/arm64,linux/amd64 -t "your-registry"/redash:latest -f /home/ubuntu/redash/Dockerfile /home/ubuntu/redash --push

참고로 이 명령어는 빌드 뿐만이 아닌, 도커허브 업로드(push)가 포함된 명령어다.

만들어진 builder를 통해 빌드 명령어를 수행하면 각 아키텍쳐에 맞게 빌드가 실행되기 시작한다.

예상대로라면 되었어야 하는데 하루가 지나도 진행이 되지않아 적용하지 못한걸로.... 🤨
아무래도 redash의 코드 자체가 지원하지 않는 아키텍쳐라 멀티 플랫폼 빌드만으론 해결이 되지 않는건가? 싶다.

 

+ 2023.12.26

$ docker buildx build --platform linux/aarch64,linux/arm64,linux/amd64 -t "your-registry"/redash:latest -f /home/ubuntu/redash/Dockerfile /home/ubuntu/redash --push

위의 빌드 명령어에서 2012년까진 aarch64라는 이름을 썼으나, 이후로는 amd64로 이름이 바뀌었다. 그래서 빌드 에러가 발생 한 것. 결론은 aarch64 == arm64 이다. 

나무위키에서도 친절하게 나와있다.

https://docs.docker.com/build/building/multi-platform/

 

Multi-platform images

Introduction to multi-platform images and how to build them

docs.docker.com

도커 공식 홈페이지의 멀티 플랫폼을 참고하면 여기선 aarch64라는 표현 없이, arm64만 쓴다. 이러니 당연히 빌드가 안되지 공식 홈페이지 확인을 생활화 합시다...

빌드하는데 거의 한시간 걸렸다.
빌드가 다 되고나면 나의 도커허브에 업로드가 정상적으로 된다.
업로드 된 멀티 플랫폼 빌드 이미지를 실행하면 왠만해선 잘 될것이다. 여기서 발생한 에러는 실행 이미지의 문제가 아닌, 리대시 시크릿 키 관련 문제이므로 도커 빌드와는 별개의 문제다.

 

끝!

반응형