【问题标题】:Connect to Google Cloud postgres SQl from Google App Engine Custom flex environment从 Google App Engine 自定义 flex 环境连接到 Google Cloud postgres SQl
【发布时间】:2019-05-30 08:57:01
【问题描述】:

我有一个通过以下文件读取数据库配置的 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 flex 环境文件:

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 的错误。我怎样才能做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我完全按照你说的做了。我忘记链接问题中的文档。不幸的是,它没有为我解决。我不能使用 JDBC 套接字,因为我不想更改任何源代码。
    • 您能否验证 App Engine 的默认服务帐户是否具有 Cloud SQL Connect 角色,您能否发布您看到的完整堆栈跟踪?
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2017-06-17
    • 2019-11-27
    • 2015-07-18
    • 2015-09-15
    • 1970-01-01
    相关资源
    最近更新 更多