首页 > 解决方案 > Google Cloud Run 运行状况检查因 Docker-Compose 失败

问题描述

我正在尝试将我的后端上传到 Google Cloud Run。我正在使用带有 2 个组件的 Docker-Compose:一个 Golang 服务器和一个 Postgres DB。

当我在本地运行 Docker-Compose 时,一切正常!当我上传到 Gcloud 时

gcloud builds submit . --tag gcr.io/BACKEND_NAME

gcloud run deploy --image gcr.io/BACKEND_NAME --platform managed

Gcloud的健康检查失败,卡住Deploying... Revision deployment finished. Waiting for health check to begin.并抛出Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

我了解 Google Cloud Run 提供了一个环境PORT变量,我试图在我的docker-compose.yml. 但是命令仍然失败。我没有想法,这里可能有什么问题?

这是我的docker-compose.yml

version: '3'
services:
  db:
    image: postgres:latest # use latest official postgres version
    container_name: db
    restart: "always"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db
    volumes:
      - database-data:/var/lib/postgresql/data/ # persist data even if container shuts down
  api:
    container_name: api
    depends_on: 
      - db
    restart: on-failure
    build: .
    ports: 
      # Bind GCR provided incoming PORT to port 8000 of our api
      - "${PORT}:8000"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db
volumes:
  database-data: # named volumes can be managed easier using docker-compose

并且api容器是一个 Golang 二进制文件,它在调用http.ListenAndServe(":8000", handler).

标签: dockergogoogle-cloud-platformdocker-composegoogle-cloud-run

解决方案


推荐阅读