尽管这里没有记录,但我认为GOOGLE_CLOUD_PROJECT环境变量曾经是在容器内定义的,但现在不再是了
我什至可以在此处的代码中找到它的引用:
project := os.Getenv("GOOGLE_CLOUD_PROJECT")
在哪里可以找到我的项目 ID?
我已在 Cloud Run 中托管了我的节点应用程序,并且我的所有请求都在 300 - 600 毫秒的时间内得到满足。但一个端点从第三方服务获取数据,因此请求需要 1.2 秒 - 2.5 秒才能完成请求。
我对此的疑问是
另请参阅屏幕截图,我在日志中收到一条消息以及请求“该请求导致启动新的容器实例,因此可能比典型请求花费更长的时间并使用更多的 CPU”
任何意见/建议将不胜感激。
提前致谢。
$ gcloud builds submit --tag gcr.io/projectname/testserver
// ... works fine until the COPY step:
Step 6/7 : COPY build ./
COPY failed: stat /var/lib/docker/tmp/docker-builder653325957/build: no such file or directory
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: exit status 1
Run Code Online (Sandbox Code Playgroud)
上面列出的构建文件夹/var/lib/docker/tmp/docker-builder653325957/build不是本地文件夹。Cloud Builder 是否以该格式创建临时文件夹?
如何让它复制我的本地build文件夹?
我也试过,COPY ./build ./但 CLI 输出是一样的
下面的 Dockerfile。
FROM node:12-slim
# Create app folder
WORKDIR /usr/src/app
# Install app deps. Copy the lock file
COPY package*.json ./
RUN npm install
ENV SCOPES=removed …Run Code Online (Sandbox Code Playgroud) 我们无法让 SSE 从 Google Cloud Run 上的容器发送。我试过用一个简单的 SSE 示例(https://github.com/kljensen/node-sse-example)来托管一个容器,看看它是否在我们的库中——不。
我从服务器看到客户端连接(就像最初的 GET 工作一样),但没有从服务器发送事件。该EventSource客户端从不改变CONNECTING到CONNECTED。
从 Cloud Run 文档来看,是否支持这有点含糊不清(强调我的):
Cloud Run(全代管式)目前不支持 HTTP 流式传输。因此,不支持使用 WebSockets 和 gRPC(流式 RPC)等协议的入站请求。
作为一个例外,Cloud Run(全托管式)服务支持用于入站请求的一元 gRPC。
对于出站请求,Cloud Run(完全托管)支持 WebSockets 和 gRPC。
SSE 不会算作出站请求,还是我误解了?
我想固定我的完全托管的 Google Cloud Run 集群的证书。
我可以固定 Google 生成的 SSL 证书,但我不知道我是否可以依靠它们来保留相同的证书,直到它过期,而且我无法为客户端准备他们将生成的未来 SSL 证书,因为我不是在 Google 自动安装它们之前就知道它们。
换句话说,他们的软件可能会偶尔重新生成它以进行优化或其他一些内部逻辑。
是否有其他解决方案(不包括签署每个回复)?
谢谢
使用时gcloud run deploy,如何使用命令行参数指定服务名称?我希望防止在部署时需要交互。
我目前正在像这样部署我的服务:
gcloud run deploy --image gcr.io/<PROJECT>/<TAG> --platform managed
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Cloud Storage 在 Google Cloud Run 上设置 Node 项目。使用创建的服务帐户时遇到身份验证问题。
创建服务帐户时,我确实成功下载了 JSON 令牌,并在本地开发环境中正确运行了所有内容。
问题是当我将应用程序成功部署到 Cloud Run 时,我收到以下错误:
Error: The caller does not have permission
当我尝试获取用于将文件上传到存储桶的签名 URL 时会发生这种情况。
我像这样创建存储客户端:
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
Run Code Online (Sandbox Code Playgroud)
...在我的脚本中,调用是这样的:
const [url] = await storage
.bucket(bucketName)
.file(filename)
.getSignedUrl(options);
Run Code Online (Sandbox Code Playgroud)
我已经为 IAM 服务账户设置了以下权限:
我还通过控制台将提到的服务帐户分配给了 Cloud Run 实例。
只是为了确认,该应用程序使用服务帐户 JSON 密钥在本地 100% 正确运行,只是在 Google Cloud 中运行时无法正常工作。
node.js google-cloud-storage google-cloud-platform google-cloud-iam google-cloud-run
我是 GCP 的新手,并试图对其进行正面和反面。到目前为止,我已经体验过 GKE 和 Cloud Run。
在 GKE 中,我可以在我喜欢的任何端口下为任何类型的服务创建工作负载(部署)并为其分配资源。然后我可以创建一个负载均衡器并打开从 pod 到 Internet 的端口。负载均衡器有一个 IP,我可以用它来访问底层 pod。
另一方面,当我创建一个可以运行的服务时,我会给它一个 docker 镜像和一个端口,一旦服务启动并运行,它就会公开一个 HTTPS URL!我在 Cloud Run 中指定的端口是 docker 的内部端口,如果我想访问 URL,我必须通过端口 80 来完成。
这是否意味着 Cloud Run 仅适用于端口 80 下的 HTTP 服务?或者也许我错过了什么?
google-cloud-platform google-kubernetes-engine google-cloud-run
当涉及到 docker-compose、Dockerfile 以及 GCP 的服务 Cloud Run 的工作原理时,我有一个很大的理解问题。这使我无法在我拥有的项目中取得进展,而且我几乎无所事事可尝试。
我有一个 docker-compose.yml 文件,内容如下:
version: '2'
services:
# The Application
app:
container_name: laravel_app
build:
context: ./
dockerfile: docker/app.dockerfile
volumes:
- ./storage:/var/www/storage
# The Web Server
web:
container_name: nginx_server
build:
context: ./
dockerfile: docker/web.dockerfile
volumes:
- ./storage/logs/:/var/log/nginx
ports:
- 8080:80
Run Code Online (Sandbox Code Playgroud)
如您所见,它非常简单,有两种服务,一种用于带有 php 的应用程序,另一种用于服务器。两者都有自己的 dockerfiles 并且构建是正确的。在本地一切正常,没有问题。
我现在想在 GCP 上的 Cloud Run 服务中部署这些服务。在挖掘之后,我发现可能只能使用单个Dockerfile. 有没有办法将 docker-compose.yml 容器部署到 Cloud Run?我应该使用其他服务吗?
docker google-cloud-platform docker-compose google-cloud-run
我想在我的 Cloud Run 托管 API 前面使用 API 网关,并且只允许从 API 网关访问 Cloud Run URL。
我目前有一个 API 部署到 Cloud Run,并启用了“公共”入口和授权。这有效,但是我很好奇是否可以将 Cloud Run 上的入口模型更改为“内部”,以完全避免将任何互联网流量路由到我的 Cloud Run 容器。
我知道 API Gateway 处于 Beta 版,内部入口的某些方面似乎也是 Beta 版——但是我很好奇是否有办法使这项工作发挥作用。
根据入口文档,似乎如果我能以某种方式使我的 API 网关请求来自 VPC 网络,则此设置应该可以工作,但是我无法找到在 API 网关端实现此目的的方法。
google-cloud-platform google-cloud-run google-vpc google-cloud-api-gateway