在詹金斯CI管道中,我们正在为NPM包装使用JFrog Artifactory。我想从Artifactory下载npm包,同时在我们的CI中为npm ci/npm install步骤构建码头映像,以减少码头构建过程的持续时间。
我尝试如下所示,将包含私有注册表信息的.npmrc文件从本地容器复制到码头容器,当我检查npm日志时,安装它,可以从JFrog Artifactory下载依赖项。但是这不是一种安全的方法,因为我不想将.npmrc保存在本地存储库中并提交到VCS。
做这件事最好的方法是什么?
Dockerfile
FROM node:12.21.0-alpine3.12 AS builder
WORKDIR /usr/src/app
ARG NPM_TOKEN
ARG NODE_ENVIRONMENT=development
ENV NODE_ENV=$NODE_ENVIRONMENT
COPY package.json /usr/src/app/package.json
COPY package-lock.json* .
COPY .npmrc /usr/src/app/.npmrc
RUN npm ci --loglevel verbose
RUN rm -f .npmrc
FROM node:12.21.0-alpine3.12
WORKDIR /usr/src/app
RUN apk update && apk add curl
COPY --from=builder /usr/src/app /usr/src/app
COPY . .
EXPOSE 50005 9183
CMD [ "npm", "run", "start:docker" ].npmrc
registry=https://artifacts.[company].com/artifactory/api/npm/team-npm-development-virtual
_auth = xxxxxxxxxx
always-auth = true
email = firstname.lastname@company.com发布于 2021-04-01 18:21:19
您可以将.npmrc存储在VCS上,只要它不包含"_auth“条目。
在天蓝色上,我们使用服务连接。在“构建容器”上这是不可能的,AFAIK。
因此,我的方法是使用一个受保护的构建变量来存储凭据,并在构建时注入它。在npm安装之前,您可以在.npmrc上设置"_auth“值。你可以用很多不同的方式来实现这一点,但这就是它。
https://stackoverflow.com/questions/66658180
复制相似问题