Seapy's Blog


개요

bitbucket private 저장소에 접근하기 위해서는 HTTP 인증을 하거나 컴퓨터의 SSH Key를 bitbucket에 추가해야한다. 그런데 Docker 컨테이너에서 매번 SSH Key를 생성하고 해당키를 bitbucket에 추가하는 작업은 만만치 않고 bitbucket에 너무 많은 SSH Key가 추가되는 문제가 생긴다.

미리 등록된 SSH Key 사용

이런경우 미리 등록된 SSH Key를 Docker 컨테이너안에 추가하는것으로 번거로운 작업을 없앨수 있다.

우선 아래의 Dockerfile 샘플을 보자.

FROM ubuntu
MAINTAINER seapy "iamseapy@gmail.com"

# 라이브러리 업데이트
RUN apt-get update

# git 설치
RUN apt-get install -y git

# ssh 디렉토리 생성
RUN mkdir /root/.ssh/

# 컴퓨터의 SSH Key를 Docker 컨테이너에 복사(컴퓨터의 .ssh/id_rsa 파일을 Dockerfile이 있는곳으로 사전에 복사해두어야 한다.)
ADD id_rsa /root/.ssh/id_rsa

# known_hosts 파일 생성
RUN touch /root/.ssh/known_hosts
# bitbucket의 키를 known_hosts에 추가
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

# private 저장소 데이터를 도커 컨테이너에 클론
RUN git clone git@bitbucket.org:User/repo.git

bitbucket에 등록된 SSH Key를 컨테이너에 복사하고 컨테이너의 known_hosts에 bitbucket 서버를 등록하는 것으로 접근권한 설정이 끝난다.

github은 private 저장소를 무료로 안줘서 사용 해본적이 없는데 bitbucket과 같을것이다.

컴퓨터의 id_rsa 파일이 git 저장소에 포함되지 않도록 .gitignore에 추가하는것을 잊지 말아야한다.

이 방법은 소스를 ADD 로 직접 추가하는경우 필요가 없을것 같지만 나같은 경우 최근에 개인 프로젝트 공통소스를 ruby gem으로 만들어 사용하는데 루비의 Gemfile에 bitbucket 저장소로 지정되어 있는경우 유용하다.

참고