容器无法启动。无法启动,然后在PORT环境变量定义的端口上侦听

Ste*_*ren 4 google-cloud-run

我构建了容器映像,但是当我尝试gcloud从命令行或Cloud Console 部署它时,出现以下错误:“容器无法启动。无法启动,然后侦听PORT环境变量定义的端口。 ”

小智 8

试试这个,它在我身上有效。不知何故,您需要更改其构建图像的底层平台。

docker buildx build --platform linux/amd64 -t {project-name} .

参考: https: //vincenttechblog.com/fixed-cloud-run-failed-to-start-and-then-listen-on-the-port-define-by-the-port/


Ste*_*ren 6

在您的代码中,您可能没有在侦听传入的HTTP请求,或者在错误的端口上侦听了传入的请求。

Cloud Run容器运行时合同中所述,您的容器必须在Cloud Run定义的$PORT环境变量中提供的端口上侦听传入的HTTP请求。

如果您的容器无法在预期的端口上侦听,则修订运行状况检查将失败,修订将处于错误状态,并且流量不会路由到该状态。

例如,在带有Express的Node.js中,您应该使用:

const port = process.env.PORT || 8080;
app.listen(port, () => {
  console.log('Hello world listening on port', port);
});
Run Code Online (Sandbox Code Playgroud)

在Go中:

port := os.Getenv("PORT")
if port == "" {
        port = "8080"
}
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
Run Code Online (Sandbox Code Playgroud)