3 回答
TA贡献1809条经验 获得超8个赞
GCloud Docker Builder使用ENTRYPOINT的 Exec 形式。您来自 cloudbuild.yaml 的参数没有传递给 shell,因此您的参数cat
不会被执行。
为什么不指示 KMSid_rsa
直接写入/workspace
并完全取消卷ssh
?
- name: 'gcr.io/cloud-builders/gcloud'
args:
- kms
- decrypt
- --ciphertext-file=A.enc
- --plaintext-file=/workspace/id_rsa
- --location=global
- --keyring=keyringxxx
- --key=keyxxx
- name: 'gcr.io/cloud-builders/docker'
args: [
'build', '.',
'-t', 'gcr.io/$PROJECT_ID/xxx:latest'
]
Dockerfile 变为:
FROM golang:1.11 AS builder
RUN mkdir -p ~/.ssh
COPY id_rsa ~/.ssh/
RUN ssh-keyscan github.com >> ~/.ssh/known_hosts && \
chmod -R 0600 ~/.ssh/ && \
git config --global url.ssh://git@github.com:.insteadOf https://github.com
不要忘记将它安装.gitconfig到额外的构建步骤中。我只是将它作为我的 CI 构建脚本的一部分,而不是需要额外的volume.
TA贡献1816条经验 获得超4个赞
对于步骤有问题的任何人:
COPY id_rsa ~/.ssh/
在 docker build 中不持久的地方~/.ssh/id_rsa
,对我有用的解决方法是先将文件复制到 App 文件中的目录,然后将其复制到最终目录:
ADD id_rsa /app/id_rsa RUN cp /app/id_rsa ~/.ssh/id_rsa
我不确定为什么会这样,但是好吧,给你。
- 3 回答
- 0 关注
- 138 浏览
添加回答
举报