从应用引擎实例连接到Google云SQL

时间:2017-05-13 22:21:46

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

我想在google app engine灵活环境中运行elixir应用程序。

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

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

据我所知,应用引擎实例运行云SQL代理但我在实例中不断收到以下错误: [error] Postgrex.Protocol(#PID< 0.232.0>)无法连接:**(DBConnection.ConnectionError)tcp connect(localhost:5432):连接被拒绝 - :econnrefused

1 个答案:

答案 0 :(得分:0)

我正在使用phoenix / elixir应用程序获得相同的错误,我正试图从容器引擎中移出并进入应用程序引擎灵活的环境,只是无法弄清楚要使用什么作为主机名。

在我的应用程序引擎中的php应用程序中我可以使用:/cloudsql/projectname:region:dbname作为同一个数据库,但它似乎不适用于elixir

我也尝试直接使用云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