Google Cloud 运行 中的 Django 找不到 /cloudsql 套接字
Django in Google Cloud Run cant find /cloudsql socket
我有一个已构建的 dockerized django 应用程序,已上传到 GCR,然后部署为 google 云 运行 服务。但是,启动时出现以下错误(来自云端 运行 日志):
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 运行 应该神奇地挂载一个 django 可以用来连接到 postgres 的 /cloudsql,但错误暗示它没有被挂载。
我是否需要检查额外的配置以确保套接字存在?是否有不涉及此套接字的连接到 cloudsql 的替代方法?
Cloud 运行 不会为您创建 /cloudsql 目录。你必须创建它。
此外,有关如何从云 运行 连接到云 SQL 的更多说明,您可以参考此 documentation
正如@glasnt 上面提到的,它也可能是 ACL 问题。服务帐户需要 Cloud SQL Client
角色。在默认情况下,Default compute service account
是以 compute@developer.gserviceaccount.com
.
结尾的主体
我的问题是我没有选择添加角色的选项,我的新手直觉引导我,云 运行 服务资源。相反,转到主 IAM 设置、IAM 选项卡,然后手动将权限添加到服务帐户。如果您在列表中没有看到服务帐户,因此无法编辑它的角色,您可以转到 Add +
(顶部工具栏)并手动输入电子邮件地址。
我有一个已构建的 dockerized django 应用程序,已上传到 GCR,然后部署为 google 云 运行 服务。但是,启动时出现以下错误(来自云端 运行 日志):
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 运行 应该神奇地挂载一个 django 可以用来连接到 postgres 的 /cloudsql,但错误暗示它没有被挂载。
我是否需要检查额外的配置以确保套接字存在?是否有不涉及此套接字的连接到 cloudsql 的替代方法?
Cloud 运行 不会为您创建 /cloudsql 目录。你必须创建它。
此外,有关如何从云 运行 连接到云 SQL 的更多说明,您可以参考此 documentation
正如@glasnt 上面提到的,它也可能是 ACL 问题。服务帐户需要 Cloud SQL Client
角色。在默认情况下,Default compute service account
是以 compute@developer.gserviceaccount.com
.
我的问题是我没有选择添加角色的选项,我的新手直觉引导我,云 运行 服务资源。相反,转到主 IAM 设置、IAM 选项卡,然后手动将权限添加到服务帐户。如果您在列表中没有看到服务帐户,因此无法编辑它的角色,您可以转到 Add +
(顶部工具栏)并手动输入电子邮件地址。