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

相關問題