首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为.npmrc设置env变量

为.npmrc设置env变量
EN

Stack Overflow用户
提问于 2021-04-13 03:00:32
回答 1查看 513关注 0票数 0

我知道有几个这样的帖子/问题,但没有回答。

我正在使用cloudbuild.yaml并从秘密管理器读取一个秘密值,并像这样传递它。

YAML文件

代码语言:javascript
复制
entrypoint: /bin/sh 
args: ['-c', 'docker build -t gcr.io/$PROJECT_ID/portal:$SHORT_SHA-${_TARGET} --build-arg token=$$TOKEN . ']
...

码头文件

代码语言:javascript
复制
ARG target=production
ARG token  
 
COPY package*.json ./
COPY .npmrc .npmrc

RUN npm i -g @angular/cli
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
RUN rm -f .npmrc

WORKDIR /ng-app

COPY src ./src
COPY angular.json .
COPY tsconfig.json .
COPY tslint.json .
COPY protractor.conf.js .
 
RUN  node --max_old_space_size=8192 $(npm --global bin)/ng build --configuration $target --source-map=true
...

.npmrc文件

代码语言:javascript
复制
@test:registry=https://packages.test.com/npm/js-licensed/
//packages.test.com/npm/js-licensed/:_auth=$token
...

我的问题是,它从google秘密管理器获取值,当我从dockerfile中回送它时,它会填充到docker文件中,但是.npmrc永远不会得到值,因此$token是无效的。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 17:12:58

仅仅复制文件并不能替换文件中的环境变量。如果这是自动发生的,那么您将永远无法正确地获得任何shell脚本,因为环境变量将被计算。

您将对Dockerfile所做的更改如下

代码语言:javascript
复制
ARG target=production
ARG token  
COPY package*.json ./
ENV token=$token
COPY .npmrc .npmrc.env
RUN envsubst < .npmrc.env > .npmrc && cat .npmrc

RUN npm i -g @angular/cli
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
RUN rm -f .npmrc

WORKDIR /ng-app

COPY src ./src
COPY angular.json .
COPY tsconfig.json .
COPY tslint.json .
COPY protractor.conf.js .
 
RUN  node --max_old_space_size=8192 $(npm --global bin)/ng build --configuration $target --source-map=true
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67068162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档