【发布时间】:2021-01-10 14:17:37
【问题描述】:
我已经构建了一个 dockerized django 应用程序,上传到 GCR,然后部署为谷歌云运行服务。但是,启动时出现以下错误(来自云运行日志):
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/kingdoms-289503:us-west1:kingdomsdb/.s.PGSQL.5432"?
我的 django 数据库设置如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': "/cloudsql/kingdoms-289503:us-west1:kingdomsdb",
'USER': "postgres",
'PASSWORD': "password",
'NAME': "postgres",
}
}
我已经确保创建到数据库的连接
据我了解,cloud run 应该神奇地挂载一个 at /cloudsql,django 可以使用它来连接到 postgres,但错误意味着它没有被挂载。
是否需要检查额外的配置以确保套接字存在?是否有不涉及此套接字的连接到 cloudsql 的替代方法?
【问题讨论】:
-
你能发布你的代码来说明你是如何连接到数据库的吗?您是否遵循此文档cloud.google.com/sql/docs/postgres/… cloud run 不会为您创建 /cloudsql 目录。你必须创建它
-
你的数据库有公网IP还是你删除了?
-
添加 Cloud SQL 连接后是否重新部署?
-
您的容器中是否存在
/cloudsql/目录?如果此目录尚不存在,则必须创建它。 -
检查您的 IAM 设置。您的 Cloud Run 服务的服务帐号需要具有访问 Cloud SQL 的权限。 cloud.google.com/sql/docs/postgres/connect-run
标签: django postgresql google-cloud-platform google-cloud-sql google-cloud-run