Docker Image 빌드할때 ssh로 Git clone하기.

도커 이미지를 만들 때, 호스트에 있는 파일을 복사하는 게 가장 일반적이겠지만, CI툴에서 이미지 빌드를 한다거나, 특정한 브랜치를 항상 빌드한다거나 하는 특정한 경우에 Docker Image를 만드는 중에 소스코드를 클론 하는 경우가 있습니다. 이럴 때는 Dockerfile에 아이디와 패스워드를 노출할 수는 없기에, 제가 사용한 방식은 리파지토리에 등록된 Deploy Key를 이용하여 클론 한 후에 이미지에서 제거하는 방법을 사용했습니다. Dockerfile 코드는 다음과 같은 형식입니다. FROM ubuntu:latest COPY ssh_key /home/bitlog/.ssh/id_rsa RUN git clone git@github.com:bitlog/dev-repository.git RUN rm /..

Git clone --depth=1 이후에 히스토리 복원하기.

Git 리파지토리의 이력이 많아지거나, 리파지토리 용량이 클수록 clone을 받는데, 시간도 많이 걸리고 스토리지도 많이 필요하게 됩니다. 그래서 리파지토리의 일부 이력만 받아오는 방법이 있는데, 이를 전문용어로 shallow clone 이라고 합니다. 얕은 클론이라고 해석할 수 있는데, 이걸 기억하면 옵션도 쉽게 기억할 수 있습니다. 옵션이 depth거든요. shallow clone 앞에서도 설명했드시 Git 리파지토리의 전체 이력 중 일부만 받아오는 행위를 shallow clone이라고 합니다. 그 반대, 즉 전체 이력을 받아오는 것을 deep clone (깊은 클론)이라고 합니다. 대개의 경우, 전체 이력을 받아오지만, 리파지토리가 매우 크거나, 오랜동안 쌓인 이력이 매우 많을 경우, 또는 요즘은 ..