无法将 google 应用引擎中 docker 容器中的 spring 启动应用程序 运行 连接到 google 云 sql?

Can't connect spring boot app running in docker container in google app engine to google cloud sql?

我有 spring 引导应用程序,它在 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 我可以访问 google 云 SQL,也可以连接到它数据抓取。但是当我将我的应用程序部署到 google 应用程序引擎时,它无法连接到数据库。如何授予我的应用程序访问 google 云 sql 的权限?我还干了将应用程序 IP 地址添加到授权网络,但 IP 地址是动态的。

我解决这个问题的方法是完全错误的。要访问 google cloud 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'

创建 google 云 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 云 gcp 将创建它并将您的应用程序连接到云数据库。