【发布时间】:2021-03-22 16:25:55
【问题描述】:
我在下面有节点 Js 代码,它使用连接池连接到 PostgreSql 数据库:
const express = require("express");
const path = require("path");
var bodyParser = require("body-parser");
var cors = require("cors");
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());
const Pool = require("pg").Pool;
const pool = new Pool({
user: "",
host: "",
database: "",
password: "",
port: 5432,
});
app.get("/get_que", (req, res) => {
pool.query(
"SELECT json FROM surveys where available = TRUE;",
(error, results) => {
if (error) {
console.log(error);
}
res.json({ data: results.rows });
}
);
});
以上应用已部署在 Google Cloud Run 中并配置了 Google Cloud SQL(PostgresSql 连接),但无法从 Google Cloud Run 应用连接。
在本地使用 Cloud SQL 代理,我可以连接到云 sql 实例。
我在上面的应用程序的“host”参数中尝试了Cloud SQL实例的公共IP,它没有连接,
如何从上述部署在 Google Cloud Run 上的 NodeJs 应用连接到 Google Cloud SQL 实例?
【问题讨论】:
-
您需要启用 Cloud SQL 的公共 IP 并通过 Cloud Run 连接选项卡设置连接。此外,您需要使用 unixsockets /cloudsql/
进行连接 -
我在部署修订版时已将 Cloud SQL 实例附加到云运行。现在,在我的代码中,在主机参数中我需要输入 '\cloudsql\
'? -
const Pool = require("pg").Pool; //下面是谷歌云 const pool = new Pool({ user: 'postgres', host: '/cloudsql/
/.s.PGSQL.5432', database: 'db1', password: 'password123 ' //端口:5432, });尝试了上面的主机参数,还向服务帐户添加了“SQL Client”角色。还是不行
标签: google-cloud-platform google-cloud-sql google-cloud-run