2017-05-13 1 views
4

Ich möchte eine Elixier-Anwendung in der flexiblen Google App Engine-Umgebung ausführen.Herstellen einer Verbindung zu einer Google Cloud-SQL aus einer App-Engine-Instanz

Ich habe auch einen Postgresql-Server läuft auf Google Cloud SQL.

Ich bin in der Lage, die Anwendung im Andock-Container bereitzustellen. Das Problem ist, dass ich nicht finden kann, wie Sie die Verbindung zum postgresql Server konfigurieren.

Soweit ich die App Engine-Instanzen ausführen, um die Cloud SQL-Proxy verstehen, aber ich halte den folgenden Fehler in der Instanz erhalten: [Fehler] Postgrex.Protocol (#PID < 0.232.0>) zu verbinden ist fehlgeschlagen: * * (DBConnection.ConnectionError) tcp connect (localhost: 5432): Verbindung verweigert -: econnrefused

+0

Sie benötigen einige Beispiel-Code hinzufügen, die zeigt, wie versuchen Sie es zu verbinden, so dass wir sag dir wo du falsch liegst. – dsignr

Antwort

0

Ich bekomme die gleichen Fehler mit einer Phoenix/Elixir-App, die ich versuche, aus der Container-Engine in die App zu verschieben Engine flexible Umgebung, kann einfach nicht herausfinden, was als Hostname zu verwenden.

in meinem PHP-App in App Engine kann ich nur :/cloudsql/projectname:region:dbname für die gleiche Datenbank verwenden, aber es scheint nicht für diesen Weg zur Arbeit Elixier

Ich habe auch versucht, über die IP-Adresse der Cloud SQL-Instanz direkt aber das hat auch nicht funktioniert.

in meinem app.yaml ich habe

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 

und in conf/staging.exs ich habe

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 
+1

Ich habe das gleiche Problem, ich denke, es könnte nur sein, dass Google den Postgres-Socket nicht zu App Engine hinzufügen wird. –

+0

ja möglicherweise. Ich lasse es jetzt in Container-Engine, aber eines Tages werde ich die freien Zyklen haben, um in die Bürozeiten von Google zu springen und sie dazu zu bringen, mir zu helfen, es herauszufinden. – phlare

+0

Ich werde in die Container-Engine schauen ... Haben Sie einen Push-Hook in Ihrem Quellcode-Hosting, der den Container Builder auslöst, um ihn neu zu erstellen? –

Verwandte Themen