![](/img/trans.png)
[英]Spring Boot app can't connect to Google Cloud SQL (PostgreSQL) when deploying to Google App Engine
[英]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.