我有一个在Docker容器中运行的应用程序。它需要公司私有NPM注册表(Sinopia)中的一些私有模块,访问这些模块需要用户身份验证。Dockerfile是FROM iojs:latest。
FROM iojs:latest
我努力了:
1)创造在项目的根的.npmrc文件,这其实没有什么区别和NPM似乎使用ENV变量忽略它2) NPM_CONFIG_REGISTRY,NPM_CONFIG_USER等等,但用户不登录。
NPM_CONFIG_REGISTRY
NPM_CONFIG_USER
本质上,我似乎无法在此docker build过程中对用户进行身份验证。我希望有人可能已经遇到了这个问题(似乎是一个显而易见的问题),并且将有解决该问题的好方法。
docker build
(最重要的是,我在Docker Hub上使用了自动构建(在推送时触发),以便我们的服务器可以访问带有预构建映像的私有Docker注册表。)
有没有好的方法:1)在构建时为NPM注入凭据(因此我不必将凭据提交到Dockerfile)或2)以另一种我没想到的方式来做?
在为您的node.js / io.js容器(you/iojs)创建基础映像时,我发现了一种有点优雅的解决方案:
you/iojs
.npmrc
范例.npmrc:
registry=https://npm.mydomain.com/ username=dockerUser email=docker@mydomain.com strict-ssl=false always-auth=true //npm.mydomain.com/:_authToken="someAuthToken"
Dockerfile
这是我的Dockerfile(基于iojs:onbuild):
iojs:onbuild
FROM iojs:2.2.1 MAINTAINER YourSelf # Exclude the NPM cache from the image VOLUME /root/.npm # Create the app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Copy npm config COPY .npmrc /root/.npmrc # Install app ONBUILD COPY package.json /usr/src/app/ ONBUILD RUN npm install ONBUILD COPY . /usr/src/app # Run CMD [ "npm", "start" ]
FROM you/iojs