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.SocketFactory
(и
quarkus.datasource.username=
а также
quarkus.datasource.password=
, как всегда).
The
?ipTypes=PRIVATE&
заключается в подключении к Cloud SQL только с частным, а не общедоступным IP-адресом из GCP; пропустите это, если вы хотите подключиться к общедоступному IP-адресу, например, с вашего компьютера разработчика дома или на работе.
Самая сложная часть заключалась не столько в этом, сколько в настройке всех необходимых предварительных условий на GCP , чтобы это соединение работало из службы Quarkus, работающей на AppEngine Standard.
Quarkus Issue #9985 предназначен для документирования этого.