您好,我正在尝试将 grafana docker 容器部署到 google app engine flex。Grafana 将使用 postgresql(云 sql)作为内部数据库。
我目前正在使用这个 Dockefile:
FROM grafana/grafana:latest
ENV GF_SERVER_HTTP_PORT 8080
ENV GF_DATABASE_URL postgres://postgres:[email protected]:5432/grafana
ENV GF_DATABASE_TYPE postgres
EXPOSE 8080
以及这个 app.yaml:
runtime: custom
env: flex
service: grafana
beta_settings:
cloud_sql_instances: miproj:europe-west1:midb=tcp:5432
我还激活了 Cloud SQL Admin API
做完之后
gcloud app deploy
但是我得到了
msg="Server shutdown" logger=server reason="Service init failed: Migration failed err: dial tcp 127.0.0.1:5432: connect: connection refused"
我也尝试过
cloud_sql_instances: miproj:europe-west1:midb
和
ENV GF_DATABASE_URL postgres://postgres:passwd@/cloudsql/miproj:europe-west1:midb:5432/grafana
但我明白
t=2019-05-09T10:12:56+0000 lvl=eror msg="Server shutdown" logger=server reason="Service init failed: Migration failed err: dial tcp: lookup port=5432: no such host"
但我认为这可能更多的是 grafana 如何解析主机名中间有“:”的连接链的问题。
知道我做错了什么吗?
答案1
有两种方法可以从 App Engine 连接到 Postgresql。您可以通过 TCP 或 Unix 套接字进行连接。App Engine柔性支持两者,标准仅支持套接字。当我查看您的 app.yaml 时,似乎您已经为 TCP 连接设置了正确的连接名称。
另一方面,您用作环境变量的连接字符串似乎是错误的。更改此内容:
postgres://postgres:passwd@/cloudsql/miproj:europe-west1:midb:5432/grafana
到:
postgres://postgres:[email protected]:5432/grafana
Docker 使用 172.17.0.1 作为环回地址,而不是 127.0.0.1!详细概述可参见 Google 的cloudsql 文档。