Google Cloud Run Quarkus Google Cloud SQL

Я развертываю собственное приложение Quarkus в облаке. Этому приложению необходимо подключиться к облачной базе данных postgresql sql. На облачном прогоне панели конфигурации я создаю подключения Cloud SQL (имя-экземпляра-базы-эквивалент. Cloud sql) и некоторую переменную как DB_USER, DB_PASSWORD, DB_NAME. В Quarkus я определяю свойства, как показано ниже:

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

Я должен сказать, что облачный запуск развертывается путем сборки облака.

Не могли бы вы помочь мне решить эту проблему... Спасибо

2 ответа

Вам нужно использовать unix_socket файл выглядит следующим образом

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

вам, вероятно, нужно поместить это в поле URL вашей библиотеки, но убедитесь, что библиотека поддерживает базы данных unix_socket.

У меня это работает (для MySQL вместо Postgres, но должно быть похоже) без использования unix_socket, а просто с помощью quarkus.datasource.jdbc.url=jdbc:mysql:///DB-NAME?ipTypes=PRIVATE&cloudSqlInstance=PROJECT-NAME:REGION:demo&socketFactory=com.google.cloud.sql.mysql.SocketFactoryquarkus.datasource.username=а также quarkus.datasource.password=, как всегда).

The ?ipTypes=PRIVATE&заключается в подключении к Cloud SQL только с частным, а не общедоступным IP-адресом из GCP; пропустите это, если вы хотите подключиться к общедоступному IP-адресу, например, с вашего компьютера разработчика дома или на работе.

Самая сложная часть заключалась не столько в этом, сколько в настройке всех необходимых предварительных условий на GCP , чтобы это соединение работало из службы Quarkus, работающей на AppEngine Standard.

Quarkus Issue #9985 предназначен для документирования этого.

Другие вопросы по тегам