基于NextJS/Prisma从Cloud Run连接Cloud SQL失败问题排查
背景信息
我正在使用谷歌云服务开发NextJS 14应用,采用Prisma作为ORM,通过DATABASE_URL(postgresql://postgres:password*^@IPaddress/dbname?schema=public")连接数据库。
我的配置详情:
- 启用了名为
default的VPC网络,采用基础配置。 - PostgreSQL实例同时启用私有IP和公有IP,私有IP已接入上述
defaultVPC。[PostgreSQL实例网络标签页截图] - Cloud Run实例采用基础配置,已通过下拉菜单关联目标SQL实例,完成Cloud SQL连接设置。
- 已在DATABASE_URL环境变量中配置数据库的私有IP(Prisma要求使用该IP)。[Cloud Run网络配置截图]
- 触发器YAML配置如下:由于NextJS构建过程依赖相关环境变量,我在此处传入了所有
.env变量,同时添加了--vpc-connector=default参数:
steps: - name: gcr.io/cloud-builders/docker args: - build - '--no-cache' - '-t' - >- $_AR_HOSTNAME/$PROJECT_ID/cloud-run-source-deploy/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA - . - '-f' - Dockerfile - '--build-arg' - NEXT_PUBLIC_URL=$_NEXT_PUBLIC_URL - '--build-arg' - DATABASE_URL=$_DATABASE_URL - '--build-arg' - RESEND_API_KEY=$_RESEND_API_KEY - '--build-arg' - JWT_SECRET_KEY=$_JWT_SECRET_KEY - '--build-arg' - GOOGLE_PROJECT_ID=$_GOOGLE_PROJECT_ID - '--build-arg' - BUCKET_NAME=$_BUCKET_NAME - '--build-arg' - GOOGLE_API_KEY=$_GOOGLE_API_KEY - '--build-arg' - GOOGLE_CLIENT_EMAIL=$_GOOGLE_CLIENT_EMAIL - '--build-arg' - NEXT_PUBLIC_RECAPTCHA_SITE_KEY=$_NEXT_PUBLIC_RECAPTCHA_SITE_KEY - '--build-arg' - RECAPTCHA_SECRET_KEY=$_RECAPTCHA_SECRET_KEY - '--build-arg' - GOOGLE_DB_INSTANCE=$_GOOGLE_DB_INSTANCE - '--build-arg' - GOOGLE_DB_PASSWORD=$_GOOGLE_DB_PASSWORD - '--build-arg' - GOOGLE_DB_CONNECTION_NAME=$_GOOGLE_DB_CONNECTION_NAME - '--build-arg' - GOOGLE_DB_NAME=$_GOOGLE_DB_NAME - '--build-arg' - GOOGLE_DB_USERNAME=$_GOOGLE_DB_USERNAME id: Build - name: gcr.io/cloud-builders/docker args: - push - >- $_AR_HOSTNAME/$PROJECT_ID/cloud-run-source-deploy/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA id: Push - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim' args: - run - services - update - $_SERVICE_NAME - '--platform=managed' - >- --image=$_AR_HOSTNAME/$PROJECT_ID/cloud-run-source-deploy/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA - >- --labels=managed-by=gcp-cloud-build-deploy-cloud-run,commit-sha=$COMMIT_SHA,gcb-build-id=$BUILD_ID,gcb-trigger-id=$_TRIGGER_ID - '--region=$_DEPLOY_REGION' - '--vpc-connector=default' - '--quiet' id: Deploy entrypoint: gcloud images: - >- $_AR_HOSTNAME/$PROJECT_ID/cloud-run-source-deploy/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA options: substitutionOption: ALLOW_LOOSE logging: CLOUD_LOGGING_ONLY substitutions: _AR_HOSTNAME: southamerica-west1-docker.pkg.dev _PLATFORM: managed _SERVICE_NAME: ****** _TRIGGER_ID: ****** REPO_NAME: ****** _DEPLOY_REGION: southamerica-west1 tags: - gcp-cloud-build-deploy-cloud-run - gcp-cloud-build-deploy-cloud-run-managed - ******
问题描述
我遇到数据库连接失败的错误:Can't reach database server at 172.18.160.4:5432,该地址是数据库的私有IP,应用部署在Cloud Run中。[日志截图]
内容的提问来源于stack exchange,提问作者Jose Francisco Chavez Carreon
相关产品推荐
相关产品推荐

