В документации описывается, что hasura нужна строка подключения postgres с HASURA_GRAPHQL_DATABASE_URL
env var.
Пример:
docker run -d -p 8080:8080 \
-e HASURA_GRAPHQL_DATABASE_URL=postgres://username:password@hostname:port/dbname \
hasura/graphql-engine:latest
Похоже, что моя проблема в том, что имя подключения экземпляра сервера для Google Cloud sql выглядит как PROJECT_ID:REGION:INSTANCE_ID
не TCP
Из облака запустите документы (https://cloud.google.com/sql/docs/postgres/connect-run) У меня получился такой пример:
postgres://<db_user>:<db_pass>@/<db_name>?unix_sock=/cloudsql/<cloud_sql_instance_name>/.s.PGSQL.5432
но похоже, что это не работает. Идеи?
В настоящее время я добавляю cloud_sql_proxy
в качестве обходного пути к контейнеру, чтобы я мог подключиться к TCP 127.0.0.1:5432, но я ищу прямое подключение к google-cloud-sql.
// РЕДАКТИРОВАТЬ Спасибо за комментарии, beta8 в основном помогала, но я также пропустил параметр set-cloudsql-instances
: https://cloud.google.com/sdk/gcloud/reference/beta/run/deploy#--set-cloudsql-instance
Моя полная команда запуска из облака:
gcloud beta run deploy \
--image gcr.io/<PROJECT_ID>/graphql-server:latest \
--region <CLOUD_RUN_REGION> \
--platform managed \
--set-env-vars HASURA_GRAPHQL_DATABASE_URL="postgres://<DB_USER>:<DB_PASS>@/<DB_NAME>?host=/cloudsql/<PROJECT_ID>:<CLOUD_SQL_REGION>:<INSTANCE_ID>" \
--timeout 900 \
--set-cloudsql-instances <PROJECT_ID>:<CLOUD_SQL_REGION>:<INSTANCE_ID>