Google cloud firestore 云运行错误:容器无法启动。无法在端口定义的端口上启动并侦听

Google cloud firestore 云运行错误:容器无法启动。无法在端口定义的端口上启动并侦听,google-cloud-firestore,google-cloud-run,google-cloud-build,Google Cloud Firestore,Google Cloud Run,Google Cloud Build,运行此代码一切正常 require('dotenv').config(); const express = require('express'); const Firestore = require('@google-cloud/firestore'); const path = require('path'); const app = express(); app.get('/', function (req, res) { console.log('hello-cloud-ru

运行此代码一切正常

require('dotenv').config();
const express = require('express');
const Firestore = require('@google-cloud/firestore');
const path = require('path');


const app = express();

app.get('/', function (req, res) {
    console.log('hello-cloud-run', 'request received');

    const target = process.env.TARGET || 'Juan';
    res.send(`Hello ${target} from Notch - Shopify Webhooks!`);
 });

 const port = process.env.PORT || 8080;

 app.listen(port,  () => {
    console.log('Webhook app listening on port ', port);
 });
但是,如果我添加Firestore行(以const db=开头的行),我会得到云运行错误:容器启动失败。无法在端口环境变量定义的端口上启动并侦听。此修订版的日志可能包含更多信息

require('dotenv').config();
const express = require('express');
const Firestore = require('@google-cloud/firestore');
const path = require('path');


const app = express();

const db = new Firestore({
    projectId: 'kuracao-db',
    keyFilename: path.join(__dirname, process.env.GOOGLE_APPLICATION_CREDENTIALS)
});


app.get('/', function (req, res) {
    console.log('hello-cloud-run', 'request received');

    const target = process.env.TARGET || 'Juan';
    res.send(`Hello ${target} from Notch - Shopify Webhooks!`);
});

const port = process.env.PORT || 8080;

app.listen(port,  () => {
    console.log('Webhook app listening on port ', port);
 });
FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . . 

CMD ["npm", "start"]
为什么添加Firestore db会导致云运行错误?

错误:(gcloud.run.deploy)云运行错误:容器无法启动。无法在端口环境变量定义的端口上启动并侦听。此修订版的日志可能包含更多信息

require('dotenv').config();
const express = require('express');
const Firestore = require('@google-cloud/firestore');
const path = require('path');


const app = express();

const db = new Firestore({
    projectId: 'kuracao-db',
    keyFilename: path.join(__dirname, process.env.GOOGLE_APPLICATION_CREDENTIALS)
});


app.get('/', function (req, res) {
    console.log('hello-cloud-run', 'request received');

    const target = process.env.TARGET || 'Juan';
    res.send(`Hello ${target} from Notch - Shopify Webhooks!`);
});

const port = process.env.PORT || 8080;

app.listen(port,  () => {
    console.log('Webhook app listening on port ', port);
 });
FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . . 

CMD ["npm", "start"]
我变了

const db = new Firestore({
  projectId: 'kuracao-db',
  keyFilename: path.join(__dirname, process.env.GOOGLE_APPLICATION_CREDENTIALS)
});

现在我想知道为什么。从云运行时不需要凭据?有道理,但这与端口错误有什么关系?

我改变了

const db = new Firestore({
  projectId: 'kuracao-db',
  keyFilename: path.join(__dirname, process.env.GOOGLE_APPLICATION_CREDENTIALS)
});


现在我想知道为什么。从云运行时不需要凭据?有道理,但这与端口错误有什么关系?

您的容器是从本地启动的吗?日志中有哪些错误?您确定在您的容器中设置了GOOGLE_应用程序_凭据吗?(为什么要使用这个。在云计算运行时不需要这个!)您的容器是从本地启动的吗?日志中有哪些错误?您确定在您的容器中设置了GOOGLE_应用程序_凭据吗?(你为什么要使用这个。你在云上运行时不需要这个!)大多数谷歌云产品在云上运行时会自动从环境中获取凭据(GCE、GAE、GCF、Cloud Run等)。您不需要设置
GOOGLE\u应用程序\u凭据
。要在本地重现相同的行为,请使用
gcloud auth application default login
(不要设置该环境变量)。我猜你的代码崩溃了。大多数谷歌云产品在云上运行时会自动从环境中获取凭据(GCE、GAE、GCF、Cloud Run等)。您不需要设置
GOOGLE\u应用程序\u凭据
。要在本地重现相同的行为,请使用
gcloud auth application default login
(不要设置该环境变量)。我猜你的代码崩溃了。