第一个问题是“有人知道我在下面做错了什么吗?”。第二个问题是'如果没有,有没有办法在我放在 Dockerfile 中的某种命令中列出文件,希望能进行更多调试,也许也可以在 Dockerfile 中做一个 pwd(试图看看每个环境有什么不同'
步骤 1. git checkout master, git pull
步骤 2. 运行“gcloud builds submit --config cloudbuild.yaml”
步骤 3. 使用来自 repo 的“完全相同”cloudbuild.yaml 进行 google 构建触发器设置
第 4 步。“gcloud alpha 构建触发器运行 default-push-trigger-1 --branch master”
步骤 2 成功并正确运行 Docker 镜像的入口点。步骤 4. 失败
/bin/sh: ./downloadAndExtract.sh: not found
ERROR
ERROR: build step 0 "gcr.io/orderly-gcp/continuous-deploy" failed: step exited with non-zero status: 127
我的 Dockerfile 很简单
FROM gcr.io/google.com/cloudsdktool/cloud-sdk:alpine
RUN mkdir -p ./monobuild
COPY . ./monobuild/
WORKDIR "/monobuild"
ENTRYPOINT ./downloadAndExtract.sh
我的 cloudbuild.yaml 文件更简单
steps:
- name: gcr.io/$PROJECT_ID/continuous-deploy
是不是有环境问题之类的?
我在包含这些文件的目录中运行 docker build/push 循环
当然,该目录中唯一需要的两个文件是 Dockerfile 和 downloadAndExtract.sh,所以我可能应该将我的 docker 文件更改为仅复制 downloadAndExtract。无论如何,这不是重要的部分。为什么谷歌构建触发器对我不起作用?
编辑:我刚刚顿悟了。将 ls 作为入口点。这证明异步触发器正在破坏我的构建镜像和我的单 repo 内容,并吹走我设置的任何东西。为什么是这样?他们为什么要让同步启动与构建触发器不同的构建?
最佳答案
我认为您的 Dockerfile 中有几个错误
一、路径定义
COPY . ./monobuild/
WORKDIR "/monobuild"
您将文件复制到
<currentPath>/monobuild
(我的意思是 ./monobuild
),您将工作目录定义为 <rootPath>/monobuild
.因此,入口点使用
./downloadAndExtract.sh
这通常是 <rootPath>/monobuild
.所以,为了清理你的 Dockerfile,我建议这个
RUN mkdir -p /monobuild
WORKDIR "/monobuild"
COPY . .
ENTRYPOINT /monobuild/downloadAndExtract.sh
它在你的上下文中有意义吗?它有效吗?
关于docker - 这是谷歌云构建错误吗?还是我做错了 Docker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62451758/