본문 바로가기
기타 IT 지식/git & github

[ GitHub ] Build Docker Image with Private Repo

by 코뮤(commu) 2021. 4. 24.
728x90
반응형

 

 

 

이번 포스팅에서는  Github에 있는 Private Repo 를 가지고,

도커 이미지를 빌드하는 방법에 대해 다뤄보도록 하겠습니다.

 

 

 

자격증명이 따로 필요한 이유

 

 

private 가 아닌 public 이었을 때는, 레포지토리를 git clone 을 통해 가져온 이후

도커에서 자동으로 이미지를 만들어줬었습니다.

 

 

만약 github 레포지토리가 private 라면, 이미지를 빌드할 때 github 에서 

자격증명을 요구하게 됩니다.

 

 

이번 포스팅에서는 RSA Key 를 이용해 이 key 를 github 에 등록하여 자격증명을 할 예정입니다.

 

 

 

 

 

 

RSA Key 만들기

 

 

 

 

우선, Shookiki 라는 이름의 레포지토리를 private 로 바꿔주었습니다.

 

 

public 이었던 레포를 private 로 바꿀 때는,

 

레포지토리 settings 탭에서 Danger Zone을 보면 나와있습니다.

 

 

 

 

 

저는 현재 AWS EC2 인스턴스를 이용하여 서버를 구축한 상태입니다.

 

 

 

 

 

git clone 을 할 때, public 때는 없었던 Username과 Password 입력을 요구합니다.

 

물론 올바르게 다 입력하면 clone 이 되긴 하지만, 이 과정을 도커 내부에서 자동화 되게끔 해야하기 때문에

RSA Key를 만들어 진행하도록 하겠습니다.

 

 

 

SSH-Key Gen

 

RSA 키를 만들기 위해, ssh-keygen 명령어를 이용합니다.

 

 

 

 

 

ssh-keygen -t rsa -b 4096 -C "입력할 코멘트"

 

 

-t 옵션은 어떤 암호화 방식일지를 선택하는 옵션이고,

-b 는 비트수 입니다. -C 는 코멘트를 입력하는 옵션입니다.

 

 

위 명령어를 입력하고, cd 명령어를 통해 경로 이동을 해줍시다.

 

 

cd .ssh/

 

 

 

 

경로 이동을 하고, ls 를 통해 내부 파일들을 살펴보면 위와 같이 키들이 생성되어 있습니다.

 

 

 

id_rsa 는 개인키입니다.

 

id_rsa.pub 는 공개키로, 이 파일을 github 에 등록해줘야하는 것입니다.

 

 

 

cat 명령어를 통해 id_rsa.pub 을 읽어줍니다.

 

 

cat id_rsa.pub

 

 

 

해서 나온 결과를 복사해주시고,

 

github 페이지로 돌아갑시다.

 

 

 

 

Github 에 key 등록하기

 

 

github 우측 상단 아이콘 > settings 로 들어갑니다.

 

 

 

 

좌측 탭에서 SSH and GPG keys 를 선택합니다.

 

 

 

 

 

 

 

이제 초록색 New SSH key 를 클릭해주시고,

 

 

 

아래 사진과 같이 아까 복사해두었던 키를 붙여넣기 해주시면 됩니다.

 

 

 

 

 

 

그럼 이렇게 키가 생성되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

아래와 같은 명령어를 입력해줍시다.

 

 

이 과정은, Github 에 대한 인증을 묻는 과정을 pass 하기 위해 진행합니다.

 

 

touch /home/ubuntu/.ssh/known_hosts
ssh-keyscan github.com >> /home/ubuntu/.ssh/known_hosts

 

 

 

여기까지 잘 따라 오셨다면, 이제 git clone 명령어를 칠 때 입니다!!!

 

 

github 에서 ssh clone 주소를 가져와줍니다.

 

 

 

 

 

 

복사한 후, clone 해줍니다.

 

 

git clone c(lone 주소)

 

 

 

 

묻지도 따지지도 않고 clone 완성~!

 

 

 

 

이제 이 과정을, 도커 이미지를 빌드하는 과정 속에서도 할 수 있게, 그대로 옮겨주면 됩니다.

 

 

 

 

 

 

Dockerfile 수정

 

 

RUN mkdir /root/.ssh/

# 이미지를 가지는 사람은 private key 도 가질 수 있으니 유의!
ADD ./.ssh/id_rsa /root/.ssh/id_rsa

RUN chmod 600 /root/.ssh/id_rsa

RUN touch /root/.ssh/known_hosts

RUN ssh-keyscan github.com >> /root/.ssh/known_hosts

 

 

 

도커파일의 상단에 위와 같은 명령어를 입력합니다.

 

 

저는 FROM python:3.9.0 (버전은 다를 수 있음) 뒤에 입력했습니다.

 

 

전에 실습할 때는 /home/ubuntu 에서 진행을 했었는데,

이미지를 빌드할 때는 ubuntu 가 아닌 root 로 진행하기 때문에 경로가 바뀌었습니다.

 

이 때 유의해야 할 점은, id_rsa 를 이미지를 빌드할 때 사용하기 때문에

이미지를 가지는 사람이 우리가 만든 private key 도 가질 수 있다는 것입니다!

 

 

이렇게 Docker 파일을 생성해주고,

아래쪽에 있었을 git clone 뒤의 주소도 수정해줍니다.

 

 

WORKDIR 또한 우리의 repo 이름으로 수정해줍시다.

 

 

 

 

 

 

실제 이미지 Build 하기

 

 

 

저는 mobaxterm 을 이용하여 우리가 수정한 Dockerfile 을 올렸습니다.

 

 

 

 

 

 

 

아래 명령어를 이용하여 이미지를 빌드해봅시다!

 

 

 

sudo docker image build -t (태그 이름) .

 

 

 

 

 

 

 

 

성공적으로 빌드가 된 것을 확인할 수 있습니다!

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

728x90
반응형