리눅스

도커 멀티아키텍쳐 빌드하기?

귀신이보인다 2021. 6. 5. 20:57
728x90
반응형

사실 이 방법은 이전에 찾아보다가 시도조차 해보진 않았습니다.

 

요즘엔 라즈베리파이와 시놀로지를 사용하다보니 아키텍쳐가 달라서 서로 사용하기 불편한거 같아 요즘 공부하고 있습니다.

 

일단 꼼수로 빌드를 해서 사용을 하게끔 만들어보았긴 한데...

 

$ export DOCKER_BUILDKIT=1
$ docker build --platform=local -o . git://github.com/docker/buildx
$ mkdir -p ~/.docker/cli-plugins
$ mv buildx ~/.docker/cli-plugins/docker-buildx
$ docker buildx create --name multiarch --driver docker-container --platform linux/arm/v6,linux/arm64,linux/arm/v7,linux/amd64
$ docker buildx use multiarch
$ docker buildx inspect --bootstrap

docker buildx 를 사용하기 위한 설치 하는 법입니다.

 

이제 도커 파일을 만들어봅시다.

FROM ubuntu
ENV TZ=Asia/Seoul
ENV LANG=ko_KR.UTF-8
ENV LANGUAGE=ko_KR.UTF-8
ENV LC_ALL=ko_KR.UTF-8
WORKDIR /app
COPY init.sh /init.sh
COPY supervisord.conf /supervisord.conf
RUN chmod 777 /init.sh
RUN chmod 777 /supervisord.conf
CMD /init.sh

Dockerfile 이름으로 저장하시면 되십니다.

#!/bin/bash
apt-get update
apt-get install -y curl supervisor
apt-get upgrade -y
apt-get clean
rm -rf /var/lib/apt/lists/*
cp /supervisord.conf /etc/supervisord.conf
/usr/bin/supervisord --nodaemon

init.sh 이름으로 저장하시면 되십니다.

[supervisord]
nodaemon=true
user=root

[program:bash]
command=bash
priority=300
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log

supervisord.conf 이름으로 저장하시면 되십니다.

 

이제 준비가 끝난거 같습니다.

이제 빌드를 해봅시다.

 

docker buildx build --platform linux/arm/v7,linux/amd64,linux/arm64 --tag 이미지이름 .

 

솔직하게 말씀드리면 정확이 인지하지 못하였지만 일단 꼼수로 빌드하여 사용을 할수 있게만 만들어 보았습니다.

일단 오늘은 여기까지만 작성하고 다음번에는 좀더 공부를 해보고 추가 작성해보도록 하겠습니다.

728x90
반응형