从Google App Engine自定义Flex环境连接到Google Cloud Postgres SQl

时间:2019-05-30 08:57:01

标签: google-app-engine google-cloud-platform google-cloud-sql

我有一个Java应用程序,可通过以下文件读取其数据库配置:

db.properties

dataSourceClassName = org.postgresql.ds.PGSimpleDataSource
dataSource.serverName = 127.0.0.1
dataSource.databaseName = <db name>
dataSource.portNumber = 5432
dataSource.user = postgres
dataSource.password = <password>
maximumPoolSize = 5

我建立了一个Dockerfile,

  • 为Java应用程序创建一个容器
  • 公开端口8080和5432
  • 使用ENTRYPOINT ["mvn", "jetty:run"]启动网络服务器

我的app.yaml文件用于弹性环境:

runtime: custom
env: flex

network:
  instance_tag: nlpapigae
  session_affinity: true
#  forwarded_ports:
#    - 8080
resources:
  cpu: 8
  memory_gb: 40
  disk_size_gb: 32
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 10
  cool_down_period_sec: 180
  cpu_utilization:
    target_utilization: .75
beta_settings:
  cloud_sql_instances: <instance name>=tcp:5432
env_variables:
  POSTGRES_HOST: "/cloudsql/<instance name>"
  POSTGRES_DB: <db name>
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: <password>

在部署应用程序时,出现错误,指出Postgres db无法访问。我该如何正确处理?

1 个答案:

答案 0 :(得分:1)

尝试enabling Cloud SQL Admin API。如果要在多个项目之间进行连接,请签出Connecting to App Engine page以确保您的服务帐户具有正确的权限。

作为Java用户,您可能还对Cloud SQL JDBC Socket Factory感兴趣。

相关问题