簡體   English   中英

無法將在 google 應用程序引擎中的 docker 容器中運行的 Spring Boot 應用程序連接到 google cloud sql?

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

我有 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 連接到它。 但是當我將我的應用程序部署到谷歌應用引擎時,它無法連接到數據庫。 如何授予我的應用程序訪問 google cloud sql 的權限? 我也干了將應用程序 IP 地址添加到授權網絡,但 IP 地址是動態的。

我解決這個問題的方法是完全錯誤的。 要訪問谷歌雲 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 將創建它並將您的應用程序連接到雲數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM