docker - 这是谷歌云构建错误吗?还是我做错了 Docker?

标签 docker google-cloud-platform dockerfile google-cloud-build

第一个问题是“有人知道我在下面做错了什么吗?”。第二个问题是'如果没有,有没有办法在我放在 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
  • cloudbuild.yaml
  • 部署DockerImage.sh
  • 下载AndExtract.sh
  • 运行CILocallyToTest.sh
  • 触发GoogleRemoteBuild.sh

  • 当然,该目录中唯一需要的两个文件是 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/

    相关文章:

    git - 如何通过Docker Compose中的env vars为Jhipster Registry设置Spring Cloud Server的Git URI?

    python - 在Airflow的EmailOperator中访问Xcom

    google-cloud-platform - 如何在本地运行 Jupyter,仅使用内部 IP 地址连接到 Google Cloud VM?

    docker - 有什么方法可以防止 k8s pod eviction?

    docker - --pid=host 通过 DockerFile 设置

    asp.net - Windows Docker 镜像无法访问互联网

    docker - 无法在 Kubernetes 中使用 hostPath '/var/lib/docker/containers' 作为卷

    django - 如何在 Django 中的资源 URL 中输出 IP 地址后的端口?

    docker - sh : curl: not found even install curl inside k8s pod

    Docker Compose 和 Volumes 问题