我有一个弹性 Beanstalk 应用程序,同时利用了 Web 层和工作层。通过 SQS 将作业从 Web 层卸载到工作层,以保持面向 Web 的服务器的速度。两个环境使用完全相同的代码库,并在它们下面使用 RDS 实例。
我需要在工作层的领导者服务器上运行 cron 作业。我创建了一个名为 crontab 的文件夹,其中包含一个名为 crontab 的文件(这是 Laravel Web 应用程序):
我需要在工作层的领导者服务器上运行 cron 作业。我创建了一个名为 crontab 的文件夹,其中包含一个名为 crontab 的文件(这是 Laravel Web 应用程序):
* * * * * root php /var/www/html/artisan do:something:with:database
然后,我创建了一个名为01cronjobs.config
的文件,它会在root环境下更新crontab,具体操作如下:
container_commands:
01_remove_old_cron_jobs:
command: "crontab -r || exit 0"
02_cronjobs:
command: "cat .ebextensions/crontab | crontab"
leader_only: true
.. 一切都好。现在,我想使用eb deploy
命令将其部署到EB。然而,我只想让worker层接管cron作业,因为我们只能让一个服务器在整个组中运行crons。
有没有办法告诉ebextensions配置文件仅在worker层上运行config命令?类似于worker_only: true
在这里非常有用,但它似乎不存在。
有人能提供一些关于如何实现这一点的见解吗?谢谢。