预期行为:我可以运行使用 Apple M1 芯片构建的容器。
\n观察到的行为:
\n假设您有 Google Cloud Run 帐户并且可以将 Docker 镜像推送到 Google Container Registry。我在这个例子中使用https://github.com/seenickcode/trivial-go-api。
\ncd trivial-go-apidocker build -t gcr.io/<YOUR GCR PROJECT ID>/example .docker push -t gcr.io/<YOUR GCR PROJECT ID>/exampleconsole.cloud.google.comGoogle Cloud Run > 创建新服务 > 选择推送的 Docker 映像(包含所有默认选项)> 运行Cloud Run error: Container failed to start. \nFailed to start and then listen on the port defined by the PORT environment …Run Code Online (Sandbox Code Playgroud) 当我尝试在 Google Cloud Run 中运行容器时收到此错误消息。
type: Ready
status: 'False'
reason: HealthCheckContainerError
message: |-
Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.
Run Code Online (Sandbox Code Playgroud)
我已经检查了以下内容,但对我没有任何帮助:
我的容器在本地运行,并且正在侦听默认端口,8080并将主机配置为0.0.0.0。
我的 Dockerfile:
FROM node:10
WORKDIR /usr/src/app
ENV PORT 8080
ENV HOST 0.0.0.0
COPY package*.json ./
RUN npm install --only=production
COPY . .
RUN npm run build …Run Code Online (Sandbox Code Playgroud) 有人在使用 Google Cloud Run Domain Mapping 时遇到过这个问题吗?当我将自定义域添加到我的域映射时,我得到以下信息:
等待证书供应。您必须配置 DNS 记录才能开始颁发证书。
我知道它说它只是在 1 天前添加的,我应该给它时间,但实际上我放了 5 天,删除了它,这是我第二次尝试。
您可以在下面的屏幕截图中看到它是通过 Cloudflare 添加的。我什至尝试在没有运气的情况下打开和关闭代理服务。
我想使用Google的无服务器选项之一来部署容器化代码。据我了解,谷歌对此有两种选择:
我已经看过2019年的Google Next演讲我应该在哪里运行我的代码?从5+计算选项中进行选择。我阅读了Jerry101对以下常见问题的回答:“ Google App Engine和Google Cloud Run有什么区别?” 。
对我而言,基本上听起来像Cloud Run是使用Google App Engine灵活环境的局限性的答案。
我可以考虑在Cloud Run上选择App Engine灵活环境的原因是:
但这都是操作类型的考虑因素。我也不担心。选择App Engine Flex而非Cloud Run有技术优势吗?
谢谢
注意:自此问题发布到2019年4月,beta版本的App Engine无服务器VPC访问仅适用于标准环境,不适用于Flex,因此这不是App Engine Flex与Cloud Run问题的考虑因素
我正在创建一个 Node 应用程序,它具有 Express、swagger 和 Agenda 来运行计划的作业。在 GCP 中部署它的最佳方式是什么?我应该使用 App Engine 还是 Cloud run。
根据我对 Cloud Run 的理解,它将在像 App Engine 的 docker 这样的容器中运行,它只会使用我的应用程序并托管它。请赐教我该怎么办?
干杯,卡姆
google-app-engine node.js google-cloud-platform google-cloud-run
我在谷歌云中有以下权限。
我正在使用云存储库创建一个云运行容器。但出现以下错误。
错误:构建步骤 2“gcr.io/google.com/cloudsdktool/cloud-sdk:slim”失败:步骤以非零状态退出:1 错误已完成步骤 #2 -“部署”步骤 #2 -“部署”:错误:(gcloud.run.services.update)PERMISSION_DENIED:对资源“namespaces/buypower-mobile-app/services/test-repo”的权限“run.services.get”被拒绝(或者资源可能不存在)。
我们使用 Contentful 来管理 CMS 内容。当您在 Contentful 中保存内容时,它会发送我们在 Cloud Run 上设置的服务的 Webhook,这反过来又确保构建和部署更新的内容。
之前的设置将 Cloud Run 服务限制为最多 1 个容器,并发请求数限制为 80 个。这对于我们偶尔获得的少数 webhook 来说应该足够了。
现在,当调试有关内容未更新的投诉时,我遇到了一个非常持久且令人恼火的问题 - Google Cloud Run 不会尝试处理 Contentful 发送的 2 个 Webhook,而是使用状态和响应正文响应这 2 个 Webhook429之一Rate exceeded.。
此响应不是来自我们的后端,我可以在 Cloud RunLogs选项卡中看到 Google 生成的消息:The request was aborted because there was no available instance.
我试过了:
Contentful 的 webhook 仍然存在此问题。
如果我尝试从本地计算机发出请求hey(默认为 200 个请求、50 个并发),它们都会通过且不会 …
当我尝试访问部署在 Google Cloud 上的网站时,我收到以下错误页面:
我们很抱歉...
...但是您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。
以下是我的设置的详细信息:
故障排除:
基于此,负载均衡器附近似乎存在一些网络配置/安全性。
有什么解决方案或建议可以继续调试吗?
google-cloud-platform google-cloud-networking google-cloud-run gcp-load-balancer
我们已经运行 Google Cloud Run 一个多月了,并注意到我们定期有云运行实例简单地失败:
请求失败,因为到实例的 HTTP 连接有错误。
此消息几乎总是*由以下消息处理(这些是日志中仅有的消息):
此请求会导致启动新的容器实例,因此与典型请求相比,可能需要更长的时间并使用更多的 CPU。
* 我无法找到,也无法回忆起一个不正确的案例,但我没有进行详尽的搜索。
一些可能很重要的事情:
将 docker 容器映像部署到 Cloud Run 时,我可以选择一个区域,这很好。Cloud Run 将构建委托给 Cloud Build,它显然创建了两个存储桶来实现这一点。意外的行为是存储分区不是在 Cloud Run 部署的区域中创建的,而是默认为美国多区域。
如何将区域指定为“us-east1”,以便“始终免费”层承担存储成本? (显然,美国多区域存储桶将数据存储在免费层限制之外的区域,这导致了意外账单 - 我试图避免该账单。)
如果重要的话,我也在这个项目中使用 Firebase。我在 us-east1 区域创建了 Firebase 默认存储桶,希望它也能成为其他桶的默认存储桶,但事实并非如此。最终的存储桶列表如下所示,您可以在其中看到使用不需要的多区域设置自动创建的两个存储桶。
这是我用来构建和部署的 shell 脚本:
#!/bin/sh
project_id=$1
service_id=$2
if [ -z "$project_id" ]; then
echo "First argument must be the Google Cloud project ID" >&2
exit 1
fi
if [ -z "$service_id" ]; then
echo "Second argument must be the Cloud Run app name" >&2
exit 1
fi
echo "Deploying $service_id to $project_id"
tag="gcr.io/$project_id/$service_id"
gcloud builds submit \
--project …Run Code Online (Sandbox Code Playgroud) google-cloud-storage google-cloud-platform google-cloud-build google-cloud-run