尝试使用 Pgadmin 连接到 Google Cloud Platform 上的 postgres 容器时出现内部服务器错误

Internal Server Error when trying to connect to postgres container on Google Cloud Platform using Pgadmin

我已经使用 cloudbuild.yaml 文件部署了一个 postgres docker 映像。我的服务部署在云 运行 上,但我无法使用云 运行 提供的 url 连接到数据库。我在下面包含了 cloudbuild.yaml。

- name: "gcr.io/cloud-builders/docker"
  args: ['pull', 'postgres']
- name: "gcr.io/cloud-builders/docker"
  args: ['tag', 'postgres','gcr.io/abi/postgres']
- name: "gcr.io/cloud-builders/docker"
  args: ['push', 'gcr.io/abi/postgres']  
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
  entrypoint: gcloud
  args: ['run', 'deploy','postgres', '--image','gcr.io/abi/postgres', '--region','us-central1','--platform','managed', '--port','5435', '--allow-unauthenticated','--set-env-vars','POSTGRES_USER=postgres','--set-env-vars','POSTGRES_PASSWORD=root','--set-env-vars','POSTGRES_DB=abi','--set-env-vars','PGDATA=/var/lib/postgresql/data','--set-env-vars','PGPORT=5435']

我还在云 运行 上部署并 运行 部署了 pgadmin 映像。当我尝试使用云 运行 提供的 URL 将 postgres 数据库服务器添加到 pgadmin 时,出现内部服务器错误。 pgadmin 和 postgres 镜像都部署在 GCP 上的同一个项目中。

您的容器崩溃的原因是 Google 云 运行 需要容器响应 HTTP 请求。

您的容器必须监听配置的TCP端口,默认为8080。协议为HTTP。客户端可以使用 HTTP(端口 80)或 HTTPS(端口 443)连接到 Google 云前端。 HTTP 请求将被重定向到 HTTPS。本质上,您的容器必须提供 Web 服务器。不支持其他客户端协议,例如 FTP、SMTP、PostgreSQL 等

您的另一个问题是持久数据存储。您将如何初始化数据库文件? Cloud 运行 可以随时创建和销毁容器。容器启动之间不会保留数据。

Container runtime contract