我试图让strapi启动和运行的GCP使用pg。
我是这么做的:
- 逐步遵循this tutorial
- 使用
npm install
而不是yarn
是唯一的区别 - 启用云SQL API(基于this answer)
- 为App Engine默认服务帐户指定"Cloud-SQL-Agent"角色
- 将database.js的内容从环境更改为静态字符串
经过大量的实验和尝试不同的东西,我仍然得到以下错误:
2023-02-21 06:24:31 default[20230221t070653] [2023-02-21 06:24:31.418] debug: ⛔️ Server wasn't able to start properly.
2023-02-21 06:24:31 default[20230221t070653] [2023-02-21 06:24:31.421] error: connect ECONNREFUSED /cloudsql/myproject-123:europe-west1:postgres-strapi/.s.PGSQL.5432
2023-02-21 06:24:31 default[20230221t070653] Error: connect ECONNREFUSED /cloudsql/myproject-123:europe-west1:postgres-strapi/.s.PGSQL.5432 at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
这是一个app. yaml文件:
runtime: nodejs16
instance_class: F2
env_variables:
HOST: '0.0.0.0'
NODE_ENV: 'production'
DATABASE_NAME: 'strapi'
DATABASE_USER: 'postgres'
DATABASE_PASSWORD: 'password'
INSTANCE_CONNECTION_NAME: 'myproject-123:europe-west1:postgres-strapi'
beta_settings:
cloud_sql_instances: 'myproject-123:europe-west1:postgres-strapi'
SQL连接中的公共IP框被选中,并且App引擎在同一个项目中-因此根据页面,它应该在默认情况下进行身份验证。
激活的API包括:
- 计算引擎API
- 云SQL
- sqladmin API(生产)
还有一些没有显示任何流量。
调用以下方法时,sqladmin API显示100%的错误率:google.cloud.sql.v1beta4.SqlConnectService.GenerateEphemeralCert
我没有任何可以分配给IAM面板中的应用引擎服务帐户的"Cloud SQL admin"特定角色(如here所述)。
很可能我忽略了一些很明显的事情。任何帮助都很感激!
1条答案
按热度按时间ni65a41a1#
当与另一个服务建立连接的请求被拒绝时,会出现ECONNREFUSED错误。此问题可能有不同的原因。您可以检查以下几点:
正如我在评论部分中所建议的,看起来您已经启用了Cloud SQL API。您需要启用Cloud SQL Admin API来克服这个问题。这是您在故障排除部分中提到的同一文档中提到的常见问题。您能仔细检查一下吗?
您似乎还启用了Cloud - SQL代理角色。您可以尝试按照文档-2中的建议为App Engine默认服务帐户指定“Cloud-SQL-Client”角色。
您还需要检查您的网络配置。该问题可能与使用带有出口设置的云SQL的VPC有关。如文档-3中所述
如果您通过VPC连接器路由所有出口流量,则必须使用专用IP。
同时检查您是否使用了Node.js,Npm,Strapi的旧版本。尝试更新到最新版本并查看。
如果您仍然遇到错误,请尝试提交支持票证here,因为它需要项目检查来查找错误的原因。