horizon 和 cron 容器的待命和存活探针怎么写?
1. 运行环境
1). 当前使用的 Laravel 版本?
9.31.0
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
8.1.9
php-fpm 版本:
artisan 命令执行
3). 当前系统
alpine
4). 业务环境
生产环境
2. 问题描述?
目前生产环境使用 k8s
进行部署,接口部分由于可以使用 http 服务进行待命 readyness
和存活 liveness
探针检测。但 horizon
和 定时任务如何进行探针检测。
目前 horizon
按照消费的队列拆分成不同的 pod
进行消费,定时任务也使用单独的 pod
进行部署。
我尝试过执行 php artisan horizion:status
但无论在哪个容器执行都会输出:
Horizon is running.
定时任务我还没找到如何检测其正常执行的指标。
3. 您期望得到的结果?
只检测当前容器内,horizon
或定时任务是否执行正常。
Horizon 和 Cron 是 Laravel 框架中的两个组件,分别用于处理队列任务和计划任务。如果希望在容器中运行这两个组件,可以通过在 Dockerfile 中添加适当的命令来实现。
首先,如果希望在容器中运行 Horizon,可以在 Dockerfile 中添加如下命令:
上面的命令中,
php
是 PHP 的可执行程序,artisan
是 Laravel 框架的命令行工具,horizon
是 Laravel Horizon 组件的启动命令。通过上面的命令,容器启动时就会运行 Laravel Horizon 组件。如果希望在容器中运行 Cron,可以在 Dockerfile 中添加如下命令:
上面的命令中,
cron
是 Linux 系统中的计划任务程序,-f
是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。通过上面的命令,容器启动时就会启动 cron 程序,并开始执行计划任务。此外,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以在 Dockerfile 中添加如下命令:
上面的命令中,前面的
CMD
指令会启动 cron 程序,后面的CMD
指令会启动 Laravel Horizon 组件。这样,容器启动时就会同时运行这两个组件。至于容器的待命和存活探针,可以通过在 Dockerfile 中添加 HEALTHCHECK 指令来实现。例如,如果希望在容器的 Horizon 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:
上面的命令中,
php
是 PHP 的可执行程序,artisan
是 Laravel 框架的命令行工具,horizon:health
是 Laravel Horizon 组件的健康检查命令。这个指令会检查 Horizon 组件的状态,如果 Horizon 组件正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。此外,如果希望在容器的 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:
上面的命令中,
cron
是 Linux 系统中的计划任务程序,-f
是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。如果 cron 程序正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。总之,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以通过添加相应的命令来实现。此外,您还可以通过添加 HEALTHCHECK指令来检查容器的健康状态,并在容器不健康时采取适当的措施。
例如,假设您希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:
指令来检查容器的健康状态,并在容器不健康时采取适当的措施。
例如,假设希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:
上面的命令中,前两个 CMD 指令用于启动 cron 和 Horizon 组件,后两个 HEALTHCHECK 指令用于检查容器的健康状态。通过这些命令,您可以在容器中同时运行 Horizon 和 Cron 组件,并检查容器的健康状态。 总之,容器的待命和存 继续活探针可以通过添加 CMD 和 HEALTHCHECK 指令来实现。通过这些指令,可以在容器中启动和运行 Horizon 和 Cron 组件,并检查容器的健康状态。这样,就可以在容器中运行 Horizon 和 Cron 组件,并确保容器始终处于健康状态。