CRON作业ping正在运行的容器端口,并在出现错误时重新启动服务器



我有一个在docker容器中运行的python脚本,容器中有一个REST API(本地主机从8085访问端口(

事情做得很好(http://{host_ip_address:8085}(,但容器偶尔会停止响应http请求,重新启动容器可以解决问题。

我想在运行容器的主机中设置一个CRON作业,以检查http://localhost:8085正在响应,如果没有,请重新启动容器。

我可以重新启动机器上所有正在运行的容器,因此失败命令可以是:

docker restart $(docker ps -a -q)

我怎样才能做到这一点?

回答我自己的问题:

docker有HEALTHCHECK指令,可以通过我们想要的任何命令轮询容器。不幸的是,在编写本文时,如果不正常,容器将不会自动重新启动。

以下是我在Dockerfile中的HEALTHCHECK指令(应用程序正在暴露端口8085(:

HEALTHCHECK --interval=1m --timeout=30s --start-period=45s 
CMD curl -f --retry 6 --max-time 5 --retry-delay 10 --retry-max-time 60 "http://localhost:8085" || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)'

最新更新