首页 > 解决方案 > 在 Google Cloud 中部署 Docker 映像时 ENTRYPOINT 无效

问题描述

当我从 gcloud-cli运行“ gcloud builds submit --config cloudbuild.yaml ”时出现此错误。

Step #1: Deploying...
Step #1: Setting IAM Policy.....................................done
Step #1: Creating Revision.....................................................failed
Step #1: Deployment failed
Step #1: ERROR: (gcloud.run.deploy) Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/customerapi-275705/quickstart-image@sha256:0d1965181fa4c2811c3fcbd63d68de5b4c348ee5b62615594946dea48fee9735"
Step #1: error: "Command \"/quickstart.sh\": invalid mode \"-rw-rw-rw-\" for /quickstart.sh"
Step #1: ].
Finished Step #1

该文件应该具有由 chmod 设置的“+x”(读取/执行)权限。Windows 等效项是“ /grant User:F ”。

步骤#1:错误:“命令\”/quickstart.sh\“:无效模式\”-rw-rw-rw-\“对于/quickstart.sh”

-rw-rw-rw 对我来说似乎是正确的。我错过了什么?

这是在我的 Dockerfile

FROM alpine
COPY quickstart.sh /
CMD ["\/quickstart.sh"]

这是我的 cloudbuild.yaml

steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quickstart-image', '.' ]

    - name: 'gcr.io/cloud-builders/gcloud'
      args:
      - 'run'
      - 'deploy'
      - 'myservice'
      - '--image'
      - 'gcr.io/$PROJECT_ID/quickstart-image'
      - '--region'
      - 'europe-north1'
      - '--platform'
      - 'managed'
      - '--allow-unauthenticated'
images: 
     - 'gcr.io/$PROJECT_ID/quickstart-image'

标签: dockergoogle-cloud-platformgoogle-cloud-build

解决方案


几个小时前我遇到了同样的问题, 通过ENTRYPOINT在.Dockerfile

我尝试了shell form ENTRYPOINT,但它不起作用,大概是因为以下原因:

shell 形式阻止使用任何CMDrun命令行参数,但缺点是您ENTRYPOINT将作为 的子命令启动/bin/sh -c,不传递信号。这意味着可执行文件将不是容器的PID 1- 并且不会接收 Unix 信号 - 因此您的可执行文件将不会收到SIGTERMfrom docker stop <container>

GCP 可能需要传递一些命令行参数。

资源


推荐阅读