Подключитесь из приложения загрузки Spring, запущенного в Google Cloud Run, к Cloudsql без стартера GCP

У меня есть загрузочное приложение Spring, работающее в Google Cloud Run, и я хочу подключиться к экземпляру postgres, работающему в Google Cloudsql. Я могу подключиться с помощью стартового проекта Spring Cloud GCP.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
</dependency>

Но я не хочу добавлять эту зависимость.

Мне удалось подключиться из моего локального приложения, используя плагин postgressql и указав spring.datasource.url=*** после создания облачного прокси.

Но когда я попытался сделать то же самое из облака после использования gcloud beta run deploy --add-cloudsql-instances <INSTANCE-ID>, это не сработало. Согласно https://cloud.google.com/run/docs/configuring/connect-cloudsql, --add-cloudsql-instances автоматически создает облачный прокси. Так почему это не работает?

Спасибо.


person drunkenfist    schedule 03.10.2019    source источник


Ответы (1)


Это не работает, потому что Java не поддерживает сокеты домена Unix. Spring Cloud GCP обходит это, используя Cloud SQL JDBC Socket Factory. .

Вы можете использовать Socket Factory напрямую, добавив его в свой pom (и обновив свой URL-адрес, как указано в README).

person kurtisvg    schedule 03.10.2019
comment
Я уже пробовал это сделать, но ничего не вышло. Так выглядели мои application.properties при использовании Socket Factory spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.username=${CLOUDSQL_USERNAME} spring.datasource.password=${CLOUDSQL_PASSWORD} spring.datasource.url=jdbc:postgresql://google/${DB}?cloudSqlInstance=${DB_INSTANCE}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=${CLOUDSQL_USERNAME}&password=${CLOUDSQL_PASSWORD} - person drunkenfist; 07.10.2019
comment
Да, это должен быть ответ, но я тоже не заставил это работать. Я использую DriverManagerDataSource. - person Veslav; 28.12.2019