1

我想在 Google Cloud Run 上运行充当 GitHub 自托管运行器的 docker 容器,但是在将容器部署到 CloudRun 时遇到问题,因为它抱怨端口。错误是这样的:

Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable.

在我的 Dockerfile 中,我没有设置任何端口变量或公开任何端口,因为 GitHub 运行器不需要入口,只需出口到 443。

有没有办法将服务部署到 Cloud Run,但不公开入口端口?

如果只是为了让它运行而暴露默认的 8080 端口(尽管实际上没有服务在该端口上侦听),那么我假设我可以EXPOSE 8080在 dockerfile 中添加一个?

从 CloudRun 日志中,我可以看到 github runner 服务成功启动并注册到 GitHub,但由于此错误而退出。

我错过了什么?

4

1 回答 1

1

Cloud Run 合约非常简单:

  • 无状态应用程序(容器上没有卷挂载)
  • 响应 HTTP 请求(您需要一个网络服务器)

您收到的消息是因为端口(这里默认为 8080)上没有任何监听,因此您不遵守合同。

总之,您不能在 Cloud Run 上运行后台进程(目前),只能运行网络服务器(例如 API 后端)。

如果您正在寻找在后台运行容器的托管容器解决方案,您可以查看GKE autopilot。第一个集群是免费的,您为每个 pod(1 个或多个容器)付费

于 2021-03-19T08:21:52.390 回答