用户提供的容器在port =8080定义的端口上启动和侦听失败



我对云跑很陌生。我创建了一个非常简单的express服务器,如下所示,没有Dockerfile,因为我决定从源代码部署。

import dotenv from 'dotenv';
dotenv.config();
import express from 'express';
const app = express();
const port = process.env.PORT || 8000;
app.get('/test', (req, res) => {
return res.json({ message: 'test' });
})
app.listen(port, async function () {
console.log(`Sample Service running on port ${port} in ${process.env.NODE_ENV} mode`);
});

请注意,我是从源代码部署的,因此在我的目录中没有Dockerfile

下面是我用来部署 的命令
gcloud run deploy --source .

然后我不断返回的错误是:

用户提供的容器在port =8080环境变量定义的端口上启动和侦听失败。此版本的日志可能包含更多信息。

我不知道PORT 8080来自哪里,因为我在听PORT 8000而不是8080。

如何解决这个问题?

感谢

问题很可能与端口无关,而是与导致容器在启动时失败的其他问题有关。我的建议如下:

  • 在Google云控制台中访问Cloud Run,对于这个特定的服务,转到Cloud Run服务详细信息本身的日志。它应该告诉您容器启动失败的确切原因。有时,它可能是一个依赖项,一个丢失的命令,等等。

对于正在使用的端口8080,而不是8000——Cloud Run注入一个默认端口8080。请查看容器合同文档。您可以通过在gcloud命令中指定--port参数来覆盖它,但此时可能没有必要。

相关内容

  • 没有找到相关文章

最新更新