google-cloud-run quarkus google-cloud-sql



我在云运行下部署了一个原生的夸克应用程序。此应用程序需要连接到云 sql postgresql 数据库。 在配置面板的云运行中,我创建了一个云 SQL 连接(数据库实例名称等式云 sql(和一些变量作为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}

我的绒球.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

我不得不说云运行是由云构建部署的。

你能帮我解决这个问题吗... 谢谢

您需要使用unix_socket文件如下所示

postgres://user:password@/databasename?unix_sock=/cloudsql/projectshortcod:us-central1:pg-instance-name

您可能需要将其放在库的 URL 字段中,但请确保库支持unix_socket数据库。

我在不使用unix_socket的情况下得到了这个工作(用于MySQL而不是Postgres;但应该是类似的(,而只是使用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=(。

?ipTypes=PRIVATE&是从GCP中仅使用私有IP而不是公共IP连接到Cloud SQL;如果您想连接到公共IP,例如从家中或工作场所的开发人员计算机,请省略该IP。

最棘手的部分不是这个,而是在 GCP 上设置所有必需的先决条件,以便此连接从 AppEngine Standard 上运行的 Quarkus 服务工作。

Quarkus 问题 #9985 是关于记录这一点的。

相关内容

  • 没有找到相关文章

最新更新