docker - 在 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'
解决方案
几个小时前我遇到了同样的问题,我 通过ENTRYPOINT
在.Dockerfile
我尝试了shell form ENTRYPOINT
,但它不起作用,大概是因为以下原因:
shell 形式阻止使用任何
CMD
或run
命令行参数,但缺点是您ENTRYPOINT
将作为 的子命令启动/bin/sh -c
,不传递信号。这意味着可执行文件将不是容器的PID 1
- 并且不会接收 Unix 信号 - 因此您的可执行文件将不会收到SIGTERM
fromdocker stop <container>
。
GCP 可能需要传递一些命令行参数。
推荐阅读
- swift - 如何将数字添加到始终使用两个字符表示的字符串?
- javascript - 如何从Mysql连接的响应中获取数据
- javascript - 如何使用 Ramda 编写无点函数式 JS
- javascript - 字符串文字和字符串之间有什么区别?
- javascript - 如何通过 Node.js 上的推送通知实现一些复杂的行为
- algorithm - 三种情况下的大 O 表示法复杂度
- java - 使用弹簧引导以角度成功调用 OPTIONS 后不调用 GET 请求
- arrays - 提高循环性能以在非常大的数组中找到第 n 个最小的整数
- prolog - 不清楚交换字母
- php - wordpress 函数 esc_url 在 https 中不起作用