【问题标题】:Connecting to a google cloud SQL from an app engine instance从应用引擎实例连接到谷歌云 SQL
【发布时间】:2021-05-06 19:49:11
【问题描述】:

我想在google app engine柔性环境中运行一个elixir应用。

我还有一个在谷歌云 SQL 上运行的 postgresql 服务器。

我能够在 docker 容器内部署应用程序。 问题是我找不到如何配置到 postgresql 服务器的连接。

据我了解,应用引擎实例运行云 SQL 代理,但我在实例中不断收到以下错误: [错误] Postgrex.Protocol (#PID) 连接失败:** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection denied - :econnrefused

【问题讨论】:

  • 您需要添加一些示例代码来显示您如何尝试连接它,以便我们可以告诉您哪里出错了。

标签: postgresql google-app-engine elixir google-cloud-sql


【解决方案1】:

我在尝试将 phoenix/elixir 应用程序移出容器引擎并进入应用程序引擎灵活环境时遇到了相同的错误,只是不知道该使用什么作为主机名。

在我的应用程序引擎中的 php 应用程序中,我可以将 :/cloudsql/projectname:region:dbname 用于同一个数据库,但对于长生不老药似乎不是这样的

我也尝试过直接使用云 sql 实例的 IP 地址,但也不行。

在我的 app.yaml 中有

env_variables:
  MIX_ENV: staging
  port: 8080
  DB_ENV_POSTGRES_HOST: :/cloudsql/projectname:region:dbame
  DB_ENV_POSTGRES_USER: userman
  DB_ENV_POSTGRES_PASSWORD: password

conf/staging.exs 我有

config :guidebooks_api, GuidebooksApi.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: System.get_env("DB_ENV_POSTGRES_USER") || "postgres",
  password: System.get_env("DB_ENV_POSTGRES_PASSWORD") || "postgres",
  hostname: System.get_env("DB_ENV_POSTGRES_HOST") || "localhost",
  database: "databasename",
  pool_size: 10,
  types: GuidebooksApi.PostgresTypes

【讨论】:

  • 我遇到了同样的问题,我认为可能只是 google 没有将 postgres 套接字添加到 App Engine。
  • 是的,可能。我现在只是把它留在容器引擎中,但是这些天我将有空闲周期跳到谷歌办公时间并让他们帮助我解决这个问题。
  • 我将研究容器引擎...您的源代码托管中是否有一个推送挂钩来触发容器构建器重新创建它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
相关资源
最近更新 更多