【发布时间】:2020-02-01 03:06:32
【问题描述】:
documentation on GCP 建议正确的做法是使用 App Engine/Node -- 直到你得到所说的步骤
按照 Ghost 网站上的说明将 Ghost 安装为 NPM 模块。
好吧,Ghost 网站上的说明说不要将 Ghost 安装为 NPM 模块。不支持。
好的,CloudRun 怎么样?我发现这很有希望sample on Git。唯一的缺点是它使用内部 SqlLite 数据库,我需要连接到托管在 GCP 上的现有 MySQL 数据库。
显然,通过 TCP 连接到托管在 GCP 上的 MySQL 数据库存在某种问题。不知道为什么,但是您可以在本地运行一个代理。我可以从命令行运行 Ghost,如下所示:
ghost config --ip 0.0.0.0 --port 8080 --no-prompt --url http://localhost:8080 --db mysql --dbhost localhost --dbuser ghost_service --dbpass <pass> --dbname darkstore_blog_db
ghost start
而且它似乎有效。
但是,在 Dockerfile 中使用相同的参数,我得到了
app_1 | [2020-02-01 02:15:39] ERROR Invalid database host.
app_1 |
app_1 | Invalid database host.
app_1 |
app_1 | "Please double check your database config."
app_1 |
app_1 | Error ID:
app_1 | 500
现在这并不荒谬:Docker 容器是一个类似于 VM 的东西,有自己的“本地主机”定义。文档建议改用“host.docker.internal”。不,同样的结果。
好的,好的,我不需要在本地 Docker 容器上运行它。问题是,如果它在 CloudRun 下运行,它当然不能使用代理。当然,我应该将一个名为“socketPath”的配置值设置为值/cloudsql/mycompany-1943107437902:us-west1:mycompany-blog-db。
但是没有办法设置socketPath!这不是 ghost config 的参数,我看不到提供配置文件的方法。
所以我受阻了。我有点生气
- 数据库人员认为需要四个或五个单独的参数(在不同 DBMS 之间不一致的参数)来打开连接是合法的
- Ghost 人,因为不支持在我看来是开箱即用的明显用例
- GCP 人,只是因为他们让我很紧张
但大多数情况下,我想克服这个问题。一定有人得到了这个工作。
【问题讨论】:
-
localhost不运行mysqld(使用此配置,它不会尝试连接容器外部的任何内容);曾经尝试过 CloudSQL 实例的主机名和端口吗?通过localhost连接可能需要设置stunnel。 -
我确实尝试了主机名和端口:正如文档所承诺的那样,它没有连接。正如 Google 推荐的那样,我使用了
cloud_sql_proxy,并且成功了。 -
刚刚更新了我的答案。所以问题是,您使用的是哪一个?
标签: mysql docker google-cloud-platform ghost-blog