Docker Healthcheck 万金油
模板一:网络服务万金油(只要有网络端口,通杀) 如果容器是 Web 服务(如 Nginx、Tomcat、Node.js)、数据库(如 Redis、MySQL)或者各种中间件,只要它暴露了 TCP 端口,且容器内带有最基础的 sh,这就是最无敌的万金油配置。 它利用了 Linux 内核原生 </dev/tcp 漏洞,完全不依赖 curl 或 wget 。 healthcheck: # 语法解释:尝试与容器本地的 8080 端口建立 TCP 连接,失败则退出码为 1 test: ["CMD-SHELL", "sh -c '</dev/tcp/127.0.0.1/8080' || exit 1"] interval: 10s # 10秒探一次,既保证敏锐度,又不会给系统带来TCP连接压力 timeout: 3s # 握手超过3秒没反应,说明网络栈或主线程已经卡死 retries: 3 # 连续失败3次(大约30秒内)正式宣判死刑 start_period: 30s # 30秒新手保护期,给服务腾出启动和绑定端口的时间 注:使用时只需要把 8080 改成你容器内部的实际端口(如 Redis 改成 6379,Nacos 改成 8848)即可。 模板二:Java/Spring Boot 专属万金油(解决高 CPU 与 Full GC 假死) 对于 Java 应用,有时候端口虽然勉强能连上,但实际上 JVM 内部因为内存溢出(OOM)或者恐怖的 CPU 占用,已经完全无法处理业务了。 这时候用 Java 自带的诊断工具 jcmd 去拍 JVM 的脑袋,是最精准的万金油手段(前提是使用 JDK 镜像,非精简的 JRE)。 ...