2014-07-08 1 views
5

Docker를 사용하여 github에서 개인 레포를 복제하려고합니다. 문제는 ssh를 사용하여 해당 저장소에 액세스해야한다는 것입니다. 나는 giddub 프로젝트의 설정에 키를 추가했는데,이 설정은 도커의 서버를 식별하는 데 사용됩니다.Docker : ssh를 사용하여 개인 github 저장소에 액세스하는 방법은 무엇입니까?

제 문제는 서버가 github repo에 액세스하려고 할 때 해당 키를 사용하도록 Dockerfile에 무엇을 써야하는지 알 수 없습니다. 나는 id_rsa_gsg_keypair를 컨테이너에 추가됩니다 예를 보았지만, id_rsa_gsg_keypair를가 자신의 서버에 저장되는 경우가

RUN mkdir /root/.ssh/ 
# can't find the file id_rsa 
ADD id_rsa /root/.ssh/id_rsa 
RUN touch /root/.ssh/known_hosts 
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts 

run git clone [email protected]:user/repo.git 

존재하는 경우에 나는 고정 표시기의 서버에서 내 개인의 repo에 대한 액세스를 어떻게, 몰라?

답변

3

Dockerfile에서 git을 사용하려면 자체 개발 컴퓨터를 구성 할 때와 같은 방법으로 컨테이너를 구성해야합니다.

나는 "그들의 서버"에서 "그들의"이 무엇인지 이해할 수 없다. 그래서 나는 단지 추측하고있다.

공개 키를 github에 등록하면 개인 키도 있어야합니다. 다른 예제에서 볼 수있는 것은 id_rsa입니다.

해당 파일을 찾을 수없는 경우 처음부터 다시 시작하십시오. 이전 키인 generate a new one을 삭제하고 github 및 도커 빌드 컨텍스트에서 구성합니다 (예를 들어, Docker 파일과 동일한 폴더에 복사).

다른 전략으로, 이미지 빌드 프로세스 (로컬로 복제하고 이미지에 모든 것을 ADD 복제) 외부에서 체크 아웃을 할 수 있습니다.

+0

나는 건물 컨텍스트에 대해 몰랐다. ADD가 호스트의 파일을 직접 검색했다고 생각했기 때문에 Dockerfile에서 git clone을 사용했기 때문에 쓸모가 없었다. Dockerfile이 위치한 곳. 감사! –

6

키에 ssh-add를 사용하여이 작업을 관리했습니다.

RUN 여러 지침을 사용하여 "문제"가 발생하는 경우 비 지속 데이터는 다음 RUN에서 사용할 수 없습니다. 나는 로그인의 eval 프로세스가 계속 실행되고 SSH 에이전트는 GitHub의에 연결할 때로드 키가 하나의 CMD에 && 년대를 사용하여

RUN eval `ssh-agent -s` && \ 
    ssh-add id_rsa && \ 
    git clone [email protected]:user/repo.git 

와 GitHub의에게 개인의 repos를 사용할 수 있었다.

이 정보가 도움이되기를 바랍니다.

+0

내가 말했듯이 id_rsa가 서버에 있는지, 컴퓨터에 문제가 없는지, 서버에 구축하고 있는지 알 수 없다. –

+0

만약'ADD'를 사용한다면' Dockerfile' –

+3

이 방법을 사용하면 그것을 제거 할 때까지 docker 캐시 내에'id_rsa' 키가 포함될 것입니다. 나는 OP가 이것도 보여주고 있지만, ID_rsa 키를 도커 컨테이너에 추가하는 것은 좋지 않을 수도 있습니다. – slm