使用私有的svn + bower在dockerfile中不起作用

我一直在尝试使用docker来运行我的开发环境。 我的堆栈有一个私人凉亭registry,需要一个.bowerrc在我的$HOME

我的.bowerrc文件的格式是:

/home/.bowerrc (在我的docker安装为音量)

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

我在docker文件中挂载这个文件的方式是使用这个命令:

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

我的Dockerfile是为支持使用bower,gulp和svn的环境而构build的。 这是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"] 

我使用bower install命令的package.json文件是这样的:

 { "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 } } 

最后,当我尝试npm installbower install我得到这个错误:

 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) 

任何人都可以帮助我理解这一点?

最后我明白了这个问题。

在Docker容器中应该接受SVN证书。 为了做到这一点,在Docker容器中,使用交互连接模式-ia进入,并使用入口点/bin/bash控制台,我运行这个命令:

svn info <any_svn_respository_of_my_company>

svn info https://svn.mycompany.com/repos/ui/common/

然后我接受了证书,一切正常!

这可能与Docker和主机之间的用户ID差异有关。 所以这会导致docker无法读取需要login的文件。

要知道你的用户ID(UID),在主机和docker上运行: id -u $USER

如果它们不同,我将重新构build镜像并在Docker镜像中创build一个用户,如下所示: useradd -u 999 USERNAME其中999必须是用户的UID拥有您主机上的凭据,用户名可以不同。

希望解决您的问题,关心!

    Interesting Posts