如何将 Google App Engine (Flex) Go 应用连接到 Google Cloud

我正在用 Go 构建一个应用程序,并使用 Google App Engine 进行部署。


我已经在 Google Cloud 上设置了一个 PostgreSQL 实例,启用了 API,并使用本地计算机上的 SQL 代理(从本地 PSequel 客户端和我的应用程序)成功连接到它。


gcloud app deploy但是,当我这样做时,我收到此错误:


ERROR: (gcloud.app.deploy) Error Response: [9] 

Application startup error:

panic: dial unix /cloudsql/sapling:europe-west1:sapling/.s.PGSQL.5432: connect: no such file or directory

我尝试将 Postgres 实例从版本 11 Beta 降级到 9.6。还尝试过使用这个驱动程序https://github.com/broady/gae-postgres,这看起来很有希望,但我无法在 Flex 环境中工作。


应用程序.yaml

runtime: go

#Here we select the AppEngine Flex environment which performs a lot of the backend preparation for us including the ability to scale give the demand

env: flex

env_variables:

  POSTGRES_CONNECTION: "user=postgres password=thisisntmypwd dbname=postgres host=/cloudsql/sapling:europe-west1:sapling"

manual_scaling:

  instances: 1

#Select resource size

resources:

  cpu: 1

  memory_gb: 0.5

  disk_size_gb: 10

beta_settings:

  cloud_sql_instances: sapling:europe-west1:sapling=tcp:5432

配置/db.go


package config


import (

    "database/sql"

    "fmt"

    _ "github.com/lib/pq"

    "os"

)


var Db *sql.DB


//Set up connection to the database

func init() {

    var err error

    datastoreName := os.Getenv("POSTGRES_CONNECTION")

    Db, err = sql.Open(

        "postgres",

        datastoreName,

        )

    if err != nil {

        panic(err)

    }



    err = Db.Ping()

    if err != nil {

        panic(err)

    }


    fmt.Println("Connected to database")


}


慕哥9229398
浏览 114回答 1
1回答

婷婷同学_

我在我的测试环境中复制了这个问题,发现您收到的错误是由于 beta_settings 指定了端口。我在最后尝试了它=tcp:5432,它给了我同样的错误,然后我在没有它的情况下尝试它,它部署没有任何问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go