部署 失败相关
本地运行正常,部署到云托管后却部署失败?
本地调试请尽量基于本地 Docker 进行,如果本地开发调试未基于 Docker,直接转到云托管部署时可能遇到以下情况:
- 本地运行的时候,各种依赖组件、扩展在本地都是齐全的,但是没有在 Dockerfile 正确添加依赖安装命令,所以本地运行时不缺依赖没问题,部署到云托管上时就会因为缺乏依赖导致报错。
- 本地运行的时候,连接的是本地数据库(地址为本机 IP 或 localhost),部署到云托管上时没有将数据库地址改为云上的数据库地址。导致因为数据库无法连接而部署失败。
- 本地使用的运行时环境(JDK/python 版本等),与 Dockerfile 中定义的运行时环境不一致。
遇到报错信息“Readiness probe failed: dial tcp xx.xx.xx.xx:xxx: connect: connection refused”如何处理?
无法通过健康检查/端口调用不 通。
- 服务启动正常,但是端口填写错误,真实端口与发布时填写端口不符,导致系统误认为部署失败。
- 服务启动正常,但是没有监听任何 0.0.0.0 的本地端口,导致系统认为部署失败。
- 服务启动成功,但反复重启,进程不稳定,导致端口无法稳定调通,无法通过健康检查。请自行结合日志排查代码问题,或考虑是否因为所选容器规格过小导致内存 OOM。
- 如果您的 Dockerfile 中包含了多行独立的 CMD 命令,请注意这是错误的写法,只有最后一行 CMD 命令会被执行,之前的都会被忽略,导致业务报错。请参见 Docker 官方文档之 CMD 命令。
- 检查是否在 Dockerfile 中暴露的端口跟服务配置的端口不一致。
您可以在本地调试时,使用 netstat 等命令查看本地监听的端口和云托管配置的端口是否一致。
部署失败但看业务日志已经在正常运行?
检查服务设置中端口与真实项目端口是否一致。如果服务启动正常,但是端口填写错误,真实端口与发布时填写端口不符,会导致系统误认为部署失败,调用服务也会报错。