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 或定时任务是否执行正常。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

Horizon 和 Cron 是 Laravel 框架中的两个组件,分别用于处理队列任务和计划任务。如果希望在容器中运行这两个组件,可以通过在 Dockerfile 中添加适当的命令来实现。

首先,如果希望在容器中运行 Horizon,可以在 Dockerfile 中添加如下命令:

CMD ["php", "artisan", "horizon"]

上面的命令中,php 是 PHP 的可执行程序,artisan 是 Laravel 框架的命令行工具,horizon 是 Laravel Horizon 组件的启动命令。通过上面的命令,容器启动时就会运行 Laravel Horizon 组件。

如果希望在容器中运行 Cron,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]

上面的命令中,cron 是 Linux 系统中的计划任务程序,-f 是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。通过上面的命令,容器启动时就会启动 cron 程序,并开始执行计划任务。

此外,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]

CMD ["php", "artisan", "horizon"]

上面的命令中,前面的 CMD 指令会启动 cron 程序,后面的 CMD 指令会启动 Laravel Horizon 组件。这样,容器启动时就会同时运行这两个组件。

至于容器的待命和存活探针,可以通过在 Dockerfile 中添加 HEALTHCHECK 指令来实现。例如,如果希望在容器的 Horizon 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1

上面的命令中,php 是 PHP 的可执行程序,artisan 是 Laravel 框架的命令行工具,horizon:health 是 Laravel Horizon 组件的健康检查命令。这个指令会检查 Horizon 组件的状态,如果 Horizon 组件正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。

此外,如果希望在容器的 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

HEALTHCHECK CMD ["cron", "-f"] || exit 1

上面的命令中,cron 是 Linux 系统中的计划任务程序,-f 是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。如果 cron 程序正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。

总之,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以通过添加相应的命令来实现。此外,您还可以通过添加 HEALTHCHECK指令来检查容器的健康状态,并在容器不健康时采取适当的措施。

例如,假设您希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]
CMD ["php", "artisan", "horizon"]

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1
HEALTHCHECK CMD ["cron", "-f"] || exit 1

指令来检查容器的健康状态,并在容器不健康时采取适当的措施。

例如,假设希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]
CMD ["php", "artisan", "horizon"]

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1
HEALTHCHECK CMD ["cron", "-f"] || exit 1

上面的命令中,前两个 CMD 指令用于启动 cron 和 Horizon 组件,后两个 HEALTHCHECK 指令用于检查容器的健康状态。通过这些命令,您可以在容器中同时运行 Horizon 和 Cron 组件,并检查容器的健康状态。 总之,容器的待命和存 继续活探针可以通过添加 CMD 和 HEALTHCHECK 指令来实现。通过这些指令,可以在容器中启动和运行 Horizon 和 Cron 组件,并检查容器的健康状态。这样,就可以在容器中运行 Horizon 和 Cron 组件,并确保容器始终处于健康状态。

1年前 评论
讨论数量: 2

Horizon 和 Cron 是 Laravel 框架中的两个组件,分别用于处理队列任务和计划任务。如果希望在容器中运行这两个组件,可以通过在 Dockerfile 中添加适当的命令来实现。

首先,如果希望在容器中运行 Horizon,可以在 Dockerfile 中添加如下命令:

CMD ["php", "artisan", "horizon"]

上面的命令中,php 是 PHP 的可执行程序,artisan 是 Laravel 框架的命令行工具,horizon 是 Laravel Horizon 组件的启动命令。通过上面的命令,容器启动时就会运行 Laravel Horizon 组件。

如果希望在容器中运行 Cron,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]

上面的命令中,cron 是 Linux 系统中的计划任务程序,-f 是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。通过上面的命令,容器启动时就会启动 cron 程序,并开始执行计划任务。

此外,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]

CMD ["php", "artisan", "horizon"]

上面的命令中,前面的 CMD 指令会启动 cron 程序,后面的 CMD 指令会启动 Laravel Horizon 组件。这样,容器启动时就会同时运行这两个组件。

至于容器的待命和存活探针,可以通过在 Dockerfile 中添加 HEALTHCHECK 指令来实现。例如,如果希望在容器的 Horizon 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1

上面的命令中,php 是 PHP 的可执行程序,artisan 是 Laravel 框架的命令行工具,horizon:health 是 Laravel Horizon 组件的健康检查命令。这个指令会检查 Horizon 组件的状态,如果 Horizon 组件正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。

此外,如果希望在容器的 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

HEALTHCHECK CMD ["cron", "-f"] || exit 1

上面的命令中,cron 是 Linux 系统中的计划任务程序,-f 是该命令的一个选项,表示让 cron 程序在后台运行并保持活跃。如果 cron 程序正常运行,则返回 0,否则返回 1。如果返回值为 1,则容器被视为不健康,需要重启或替换。

总之,如果希望在容器中运行 Horizon 和 Cron 两个组件,可以通过添加相应的命令来实现。此外,您还可以通过添加 HEALTHCHECK指令来检查容器的健康状态,并在容器不健康时采取适当的措施。

例如,假设您希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]
CMD ["php", "artisan", "horizon"]

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1
HEALTHCHECK CMD ["cron", "-f"] || exit 1

指令来检查容器的健康状态,并在容器不健康时采取适当的措施。

例如,假设希望在容器的 Horizon 和 Cron 组件正常运行时视为健康,可以在 Dockerfile 中添加如下命令:

CMD ["cron", "-f"]
CMD ["php", "artisan", "horizon"]

HEALTHCHECK CMD ["php", "artisan", "horizon:health"] || exit 1
HEALTHCHECK CMD ["cron", "-f"] || exit 1

上面的命令中,前两个 CMD 指令用于启动 cron 和 Horizon 组件,后两个 HEALTHCHECK 指令用于检查容器的健康状态。通过这些命令,您可以在容器中同时运行 Horizon 和 Cron 组件,并检查容器的健康状态。 总之,容器的待命和存 继续活探针可以通过添加 CMD 和 HEALTHCHECK 指令来实现。通过这些指令,可以在容器中启动和运行 Horizon 和 Cron 组件,并检查容器的健康状态。这样,就可以在容器中运行 Horizon 和 Cron 组件,并确保容器始终处于健康状态。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!