2016-10-14 3 views
5

Docker를 사용하여 개발 환경을 실행하려고했습니다. 내 스택에는 $HOME.bowerrc이 필요한 개인용 정수기 레지스트리가 있습니다.개인용 svn + bower를 dockerfile에서 사용할 수 없습니다.

내 .bowerrc 파일의 형식은 다음과 같습니다

/home/.bowerrc

{ 
    "registry": "https://<user>:<password>@bower.mycompany.com", 
    "timeout": 300000, 
    "strict-ssl": false 
} 

가 I의 방법은 내 고정 표시기 파일에이 파일을 마운트 (내 고정 표시기 내부 볼륨으로 마운트)

docker run -it --net='host' -v $(pwd):/home/dev/app -v /home/USER/.dockershared/.bowerrc:/home/.bowerrc --name="myproject" --privileged bower-gulp:node0.12 

My Docker 파일은 bower, gulp 및 svn을 사용하는 환경을 지원하도록 제작되었습니다.

bower ECMDERR  Failed to execute "svn list https://svn.mycompany.com/repos/ui/common/tags --verbose --non-interactive", exit code of #1 svn: OPTIONS of 'https://svn.mycompany.com/repos/ui/common/tags': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.mycompany.com) 

Additional error details: 
svn: OPTIONS of 'https://svn.mycompany.com/repos/ui/common/tags': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.mycompany.com) 
: 나는이 오류가 npm install 또는 bower install하려고 할 때, 마지막으로

{ 
    "name": "my_project", 
    "version": "3.1.3", 
    "description": "", 
    "author": "", 
    "license": "ISC", 
    "repository": { 
     "type": "svn", 
     "url": "https://svn.mycompany.com/repos/My_repo" 
    }, 
    "devDependencies": { 
     "bower": "1.x", 
     "del": "^2.2.0", 
     "gulp": "3.x", 
     "gulp-maven-deploy": "^0.2.0", 
     "gulp-rename": "^1.2.2", 
     "gulp-template": "^3.1.0", 
     "node-rest-client": "^1.8.0", 
     "run-sequence": "^1.1.5", 
     "svn-npm-crutch": "0.x" 
    }, 
    "svnDependencies": { 
     "framework-tools-build": "https://svn.mycompany.com/repos/tools/build/trunk", 
     "framework-tools-functional-testing": "https://svn.mycompany.com/repos/tools/functional-testing/trunk" 

    }, 
    "engines": { 
     "node": ">=0.8.0" 
    }, 
    "scripts": { 
     "install": "bower install -F --allow-root && node ./node_modules/svn-npm-crutch/lib/svn-npm-crutch.js", 
     "demo-mode": "gulp functional-test --browser=chrome --demo" 
    }, 
    "config": { 
     "unsafe-perm": true 
    } 
} 

:이 bower install 명령이이처럼 사용하는 Dockerfile

FROM node:0.12-wheezy 
RUN useradd -ms /bin/bash dev 
RUN chown -R dev:dev /home/dev 
USER dev 
ENV HOME /home/dev 
ENV PATH "$PATH:/home/dev/.npm-global/bin" 
WORKDIR /home/dev/app 

RUN mkdir /home/dev/.npm-global && \ 
    npm config set prefix '/home/dev/.npm-global' && \ 
    npm install -g bower gulp && \ 
    apt-get install subversion 

ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"] 

package.json 파일입니다

아무도 내가 이것을 이해하도록 도울 수 있습니까?

+0

SVN에 로그인하려면 특별한 작업이 필요합니까? – R0MANARMY

+0

아니요, 내 '.bowerrc'파일에만 내 사용자와 비밀번호를 설정하십시오.내 호스트 컴퓨터에서이 작업을 시도해도 제대로 작동하지만 내 부두 컨테이너 안쪽에 = ( –

+0

바보 같은 질문, '- net ='host''이 작은 따옴표로 정확합니까? 용기가 실제로 호스트의 네트워크 스택을 사용합니까? – Griffin

답변

2

마지막으로 문제를 이해합니다.

SVN 인증서는 도커 컨테이너 내부에서 받아 들여야합니다.

svn info <any_svn_respository_of_my_company>

예를

svn info https://svn.mycompany.com/repos/ui/common/ : 대화 형 부착 모드 -ia를 사용하고 진입 점에게 /bin/bash 콘솔을 사용하여 입력의 고정 표시기 컨테이너 내부에,이 작업을 수행 할 수 는,이 명령을 실행.

다음 인증서를 수락하고 모두 잘 작동합니다!

0

이것은 도커와 호스트 컴퓨터 간의 사용자 ID 차이와 관련이있을 수 있습니다. 따라서 docker가 로그인 할 파일의 필수 항목을 읽을 수 없게됩니다. id -u $USER

서로 다른 경우, 나는 이미지를 재 구축 할 것이며, 다음과 같이 고정 표시기 이미지 내부 사용자를 만들 :

호스트와 고정 표시기 실행에 사용자 ID (UID)를 알고 useradd -u 999 USERNAME 어디 호스트 컴퓨터의 자격 증명을 소유 한 사용자의 UID 여야합니다. 사용자 이름은 다를 수 있습니다.

희망이 문제를 해결합니다. 안부를 전합니다.

+0

이 시도 할 때 이미지 빌드가 붙어. –

+0

내 컴퓨터에 모든 시도 나는'RUN useradd -ms/bin/bash -u 1001 dev'을 시도했다. –

관련 문제