docker - 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)
.
解决方案
推荐阅读
- javascript - 即使响应是错误的,也总是会触发成功
- python - 填充二维数组以计算两个 linspaces 的函数
- amazon-web-services - 将 AWS EBS 根卷(加密)引导至安全模式
- bash - 在 bash 中使用包含参数列表的变量
- php - php 邮件返回 FALSE 而 error_get_last() 返回 NULL
- powershell - 使用备用 BaseName 查找 (CSV) 名称重命名文件
- android-studio - Webview问题,pdf链接打不开,请帮忙
- python - 如何在python中返回时始终强制调用类方法
- python - 无法使用 Pandas 删除 NaN 值
- python-3.x - 在我的 python 3.6.6 中安装 opencv 时出错