我在cloud run下部署了一个本地quarkus应用程序。此应用程序需要连接到云sql postgresql数据库。在配置面板的cloud run上,我创建了一个Cloud SQL connections (db-instance-name eq.cloud sql)和Quarkus上的一些变量,如DB_USER,DB_PASSWORD,DB_NAME,我定义属性如下:
quarkus.datasource.jdbc.url=jdbc:postgresql:///${DBNAME}:5432
quarkus.datasource.driver=org.postgresql.Driver
quarkus.datasource.username=${DB_USER}
quarkus.datasource.password=${DB_PASSWORD}我的pom.xml
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<version>1.0.16</version>
</dependency> 云运行开始时,出现异常:
WARN [io.agr.pool] (Agroal_18109070341) Datasource '<default>': Connection to :5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections我不得不说,cloud run是通过cloud build部署的。
你能帮我解决这个问题吗?谢谢
发布于 2020-06-13 21:57:22
您需要使用如下所示的unix_socket文件
postgres://user:password@/databasename?unix_sock=/cloudsql/projectshortcod:us-central1:pg-instance-name您可能需要将其放在库的URL域中,但要确保库支持unix_socket数据库。
发布于 2021-01-18 10:19:26
我没有使用unix_socket,而是简单地使用quarkus.datasource.jdbc.url=jdbc:mysql:///DB-NAME?ipTypes=PRIVATE&cloudSqlInstance=PROJECT-NAME:REGION:demo&socketFactory=com.google.cloud.sql.mysql.SocketFactory (以及quarkus.datasource.username=和quarkus.datasource.password=,一如既往),让它工作起来(对于Postgres,而不是Postgres;但应该是类似的)。
?ipTypes=PRIVATE&是从GCP内部的to connect to a Cloud SQL with only a private instead of a public IP;如果你想连接到一个公共IP,例如从家里或公司的开发人员机器上,省略它。
最棘手的部分不是这么多,而是从运行在AppEngine标准上的Quarkus服务工作的to set up all the required pre-requisites on GCP。
https://stackoverflow.com/questions/62358501
复制相似问题