2017-11-03 2 views
1

일반적으로 내 질문은 도커 작성시 ssh 키에 액세스 할 수 있다는 것입니다. 나는 고정 표시기가-구성, 내 고정 표시기-compose.yml 파일에 볼륨 매핑을 사용하여 조회 실행시 내 SSH 키에 액세스 할 수있어도커 작성 중 ssh 키를 사용하여 플라스크 프로젝트에서 빌드

같은 :

services: 
    flask: 
     volumes: 
      - ~/.ssh:/root/.ssh 

하지만 고정 표시기-작성하는 동안 그들에 액세스 할 수 없습니다

더 구체적인

내가 파이썬 플라스크 응용 프로그램을 실행하고 빌드합니다. 나는 pip 패키지로 개인 git repo를 설치하고 싶다. 그래서 나는 그때 내가 수동으로 pip install git+ssh://[email protected]/username/[email protected]_name를 실행할 수 있습니다 docker-compose run flask bash를 통해 서비스에서 떠들썩한 파티를 실행하고 나는 SSH 키에 볼륨 매핑을 가지고 있기 때문에 즉, 작동하는 경우

git+ssh://[email protected]/username/[email protected]_name 

을 requirements.txt이 라인을 추가했다.

하지만 docker-compose 빌드를 실행하면 SSH 키에 액세스 할 수 없기 때문에 개인용 자식 repo에 액세스 할 수 없습니다.

docker-compose에 ssh 키에 대한 액세스 권한을 부여하거나 다른 방법으로이 문제를 해결할 수있는 방법이 있다면 누구든지 알 수 있습니까?

답변

0

ssh를 그냥 이름 사용하는 것보다 설정에 어렵 인수로 구축 : 비밀번호를. 다음은 요구 사항에 추가 한 선입니다.TXT 일을하는 데있어 그 :

-e git+https://<username>:<password>@github.com/<path to git repo>.git#egg=<package_name> 

을 특정 태그를 얻고 싶은 경우에, 당신은이 작업을 수행 할 수 있습니다

-e git+https://<username>:<password>@github.com/<path to git repo>[email protected]<tag_name>#egg=<package_name> 

당신은 자식의 repo에 대한 액세스 권한이있는 사용자 이름과 암호를 사용할 수 있습니다 , 그러나 나는 당신이 명백한 보안상의 이유로 주요 git 계정을 사용하지 않기를 권한다. 이 프로젝트를 위해 특별히 새로운 사용자를 만들고 액세스 권한을 부여하십시오.

3

volumes은하지 빌드시에, 컨테이너의 런타임에 부착된다.

솔루션 :

복사하여 귀하의 Dockerfile-.ssh 다음과에서 다음을 수행하여 Dockerfile :

COPY ./.ssh /root/.ssh 

주의 :이처럼

를, 당신의 SSH를 디렉토리가 될 것입니다 Docker 이미지에 액세스 할 수있는 모든 사용자가 사용할 수 있습니다. 그러니 같은 것을 할 기술적 인 사용자를 작성하고 이미지 또는 (더 나은)에 자신의 SSH를 복사 :

FROM baseimage AS builder 
COPY ./.ssh /root/.ssh 
RUN your commands 

FROM baseimage 
COPY --from=builder some-directory some-directory 

편집 : 대신 SSH 키 인증의 암호 : 또 다른 옵션은 사용자 이름을 사용하는 것입니다. 이 방법은, 당신처럼 Dockerfile에 인수를 구축 사용합니다 :

FROM baseimage 
ARG GIT_USER 
ARG GIT_PASS 
RUN git clone http://${GIT_USER}:${GIT_PASS}@your-git-url.git 

docker build --build-args GIT_USER=<user> --build-args GIT_PASS=<pass> .

+0

답변 해 주셔서 감사합니다. 그것은 조금 도움이되었지만 여전히 작동하지 않습니다. 그것은 내 자신의 개인 SSH 키와 함께 작동합니다. 하지만 나는 그들을 github에 밀어 넣고 싶지 않습니다. 그래서 나는 새로운 github 사용자를 생성하고 그들에게 repo에 대한 액세스 권한을 부여했습니다. 그러나이 새로운 사용자의 키에는 작동하지 않습니다. 다른 모든 것은 정확히 동일합니다. 내 키, 작동, 새 사용자 키, 작동하지 않습니다. 어떤 아이디어? docker가 ssh 키를 찾기 위해 빌드를 작성하는 곳은 ssh-agent입니까? (나는 하나를 볼 수 없다) – chasmani

+0

나는 당신의 모든 시나리오를 모른다 : 개인 또는 공개 github repo입니까? 누가 이미지를 만들 수 있을까요? 그러나 .ssh를 .gitignore에 추가하고 이미지를 빌드하려는 사람이 자신의 ssh 키를 특정 폴더에 넣어야하는 README.md에 힌트를 추가하는 것이 좋습니다. 내 대답은 내 편집을 참조하십시오. – Munchkin