【发布时间】:2021-12-25 21:00:54
【问题描述】:
- 我将一个装有 Ghost 的 docker 容器部署到 Google Cloud Run。
- Cloud Run 服务有一个具有 Cloud SQL 客户端角色的服务帐号。
- 我已将 SQL 实例添加到 Cloud Run Service 的连接中。
- Ghost 的配置文件是下面的属性
"database": {
"client": "mysql",
"connection": {
"socketPath": "/cloudsql/xxxxxxx",
"user": "xxxxxxx",
"password": "xxxxxxx",
"database": "ghost1"
}
},
- 我有一个 Google Cloud SQL - MySQL 实例已启动并正在运行。我可以通过公共 IP 并使用相同的凭据连接到它。
部署容器后,我在 Ghost 上看到“我们马上回来”页面。 当我查看每一侧的日志时,我看到了一些我不了解根本原因的错误。
Google Cloud SQL 的日志示例:
2021-11-14T06:40:37.183921Z 6971 [警告] 用户 'mysql.session'@'localhost' 被分配访问权限 0x8000,但只允许拥有 0x0。
2021-11-14T06:49:09.008652Z 7002 [Note] Aborted connection 7002 to db: 'ghost1' user: 'xxxxxxx' host: 'cloudsqlproxy~107.178.207.100' (读取通信数据包时出错)
2021-11-14T06:50:29.721121Z 7471 [注意] 读取通信包超时
Google Cloud Run 的日志示例
DatabaseError: Knex: 获取连接超时。游泳池可能已经满了。你错过了一个 .transacting(trx) 电话吗?在 DatabaseError.KnexMigrateError
我尝试了很多组合,例如使用 VPC 连接器和私有 IP,但我一直收到相同的网络超时错误。我怀疑 Ghost mysql 适配器库 (knex) 做错了什么,但我不确定这是否属实,以及是否有什么我可以做的。
感谢您的帮助
【问题讨论】:
-
我已经检查过这个页面,但对我没有帮助。我不明白我应该改变什么
标签: mysql google-cloud-platform google-cloud-sql google-cloud-run ghost-blog