[ GitHub ] Build Docker Image with Private Repo

2021. 4. 24. 17:37·Archive/Develop
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
반응형

'Archive > Develop' 카테고리의 다른 글

[ Oracle ] Oracle PL/SQL 화면출력 & 간단 예제  (0) 2021.05.03
[ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가  (0) 2021.04.24
[ LeetCode ] 49번 Group Anagrams  (0) 2021.04.19
[ LeetCode ] 819번 Most Common Word  (0) 2021.04.18
[ LeetCode ] 937번 Reorder Data in Log Files 풀이  (0) 2021.04.16
'Archive/Develop' 카테고리의 다른 글
  • [ Oracle ] Oracle PL/SQL 화면출력 & 간단 예제
  • [ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가
  • [ LeetCode ] 49번 Group Anagrams
  • [ LeetCode ] 819번 Most Common Word
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    백준 파이썬
    파이썬
    파이썬 기초
    파이썬 문제
    javascript
    장고
    Git
    백준 문제풀이
    C++
    파이썬 기초 문제
    오라클
    코드업 파이썬 기초 100제
    백준
    파이썬 알고리즘
    코드업
    보안뉴스
    docker
    비박스
    백준 풀이
    Python
    카카오 100일 프로젝트
    Oracle
    코드업 기초
    자바스크립트
    Codeup
    파이썬 백준
    자바스크립트 API
    자바스크립트 객체
    Django
    oracle db
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ GitHub ] Build Docker Image with Private Repo
상단으로

티스토리툴바