【问题标题】:Can't connect spring boot app running in docker container in google app engine to google cloud sql?无法将在谷歌应用引擎的 docker 容器中运行的 Spring Boot 应用程序连接到谷歌云 sql?
【发布时间】:2021-06-16 16:59:48
【问题描述】:

我有 spring boot 应用程序,可以在 docker 容器中运行,并且数据库配置非常简单:

spring:
   datasource:
    url: jdbc:postgresql://35.225.172.41/postgres
    username: root
    password: somePassword

Docker 文件也尽量简单:

FROM adoptopenjdk/openjdk14:slim

ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

当我在本地运行应用程序时,我发现了如何访问数据库。我将我的本地机器 IP 地址添加到授权网络,如果我在 docker 本地运行我的应用程序,我可以访问谷歌云 SQL,也可以使用 DataGrip 连接到它。但是当我将我的应用程序部署到谷歌应用引擎时,它无法连接到数据库。如何授予我的应用程序访问谷歌云 sql 的权限?我也干过将应用程序 IP 地址添加到授权网络,但 IP 地址是动态的。

【问题讨论】:

    标签: spring-boot docker google-app-engine google-cloud-sql


    【解决方案1】:

    我解决这个问题的方法是绝对错误的。要访问谷歌云 slq,我必须使用 spring-cloud-gcp。 https://github.com/GoogleCloudPlatform/spring-cloud-gcp/tree/main/spring-cloud-gcp-samples/spring-cloud-gcp-sql-postgres-sample

    我只需要添加所需的依赖项(在我的情况下:

     dependencyManagement {
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-gcp-dependencies:1.2.8.RELEASE"
        }
    }
    

    ...

    dependencies {
        implementation 'org.springframework.cloud:spring-cloud-gcp-starter-sql-postgresql'
    

    创建谷歌云 API 密钥 .json 并设置 application.yml 属性:

    spring.cloud.gcp.credentials.location 'file:/api_key.json'
    spring.cloud.gcp.sql.database-name: postgres
    spring.datasource.username: someUsername
    spring.datasource.password: somePass
    spring.cloud.gcp.sql.instance-connection-name: proj-name:region:slq-instance-name
    

    不需要数据库 URL,spring cloud gcp 将创建它并将您的应用程序连接到云数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多