2

我们对我们的npm repo使用Sinopia,并且证书(Home或当前目录中的.npmrc文件)是必需的。对于构建......直到今天,我已经避免在代码中坚持这些cred,并且通过传递一个env var,将其设置为.npmrc凭证文件的内容,使它们远离docker映像层。然后在生成过程:在Google Container Builder请求中为Docker版本设置env var与秘密YAML

RUN cat $NPMRC>.npmrc && npm install ; rm .npmrc

...都在同一个运行避免了层坚持用它的秘密.....

但我想设置容器使用建立请求YAML文件来设置环境。 var但失败。 build-request.yaml必须在代码中,所以我不能把它放在那里,我试图从桶中复制它后尝试添加--build-arg NPMRC="$(<.npmrc)" ....没有错误但auth失败

我试图创建一个使用像这样的咒语构建ARGS: [..., '--build-arg', 'NPMRC=\""$(< ./.npmrc)"\"', ....] 这表明在构建历史

... build --build-arg "NPMRC=\""$(cat ./.npmrc)"\"" -t

...这AFAICT是正确的,如果庆典得到壳层的保持想我所想它应该:

echo "NPMRC=\""$(cat ./.npmrc)"\"" -> NPMRC="_auth=...."

寻找解决方案,其他人可能已经发现

+0

通常,在构建参数或环境变量上设置秘密不是一个好主意。那些坚持图像的元数据,可以很容易地查看。 –

+1

我们在作品中有一个功能,可以帮助你很多。敬请关注! –

+0

@AhmetAlpBalkan Docker检查 does not * not *揭示NPMRC env变量....是否有其他地方你认为我应该看? – Rondo

回答

0

我认为这页是正确的金钱,所以我会说这是安全的回答,参照它自己的问题(我不会接受,我猜?):

https://cloud.google.com/container-builder/docs/tutorials/using-encrypted-files

摘要: 加密.npmrc使用云密钥管理服务,并承诺在SRC主目录中的加密文件(或复印件桶和添加gsutil会生成步骤)..然后添加解密作为构建步骤: steps: - name: gcr.io/cloud-builders/gcloud args: - kms - decrypt - --ciphertext-file=npmrc.enc - --plaintext-file=.npmrc - --location=global - --keyring=[KEYRING-NAME] - --key=[KEY-NAME]

+0

这并没有解决问题的最后一步:将该值以不会将其保存在图层中的方式获取到构建的容器中 – Rondo

相关问题