前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次 Laradock 定时任务不执行的教训

记一次 Laradock 定时任务不执行的教训

作者头像
seth-shi
发布2023-12-18 14:58:34
1640
发布2023-12-18 14:58:34
举报
文章被收录于专栏:seth-shi的专栏seth-shi的专栏
  • laradock把定时任务放在了workspace容器执行了, 所以我们查看一下日志
  • docker-compose logs -f workspace
代码语言:javascript
复制
Jul  2 12:26:59 9b6ec4d18dd1 syslog-ng[12]: syslog-ng starting up; version='3.13.2'
workspace_1                               | *** Booting runit daemon...
workspace_1                               | *** Runit started as PID 20
workspace_1                               | Jul  2 12:27:00 9b6ec4d18dd1 cron[23]: (CRON) INFO (pidfile fd = 3)
workspace_1                               | Jul  2 12:27:00 9b6ec4d18dd1 cron[23]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
workspace_1                               | Jul  2 12:28:01 9b6ec4d18dd1 CRON[26]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:29:01 9b6ec4d18dd1 CRON[60]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:30:01 9b6ec4d18dd1 CRON[84]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:31:01 9b6ec4d18dd1 CRON[102]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:32:01 9b6ec4d18dd1 CRON[120]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:33:01 9b6ec4d18dd1 CRON[157]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:34:01 9b6ec4d18dd1 CRON[178]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:35:01 9b6ec4d18dd1 CRON[198]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
workspace_1                               | Jul  2 12:36:01 9b6ec4d18dd1 CRON[218]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1)
  • 看了一下日志, 任务执行正常, 然后进到容器

docker-compose exec workspace bash

  • 跑定时任务但是不要抑制输出
代码语言:javascript
复制
/usr/bin/php /var/www/artisan schedule:run
# 如果时间刚好, 就可以执行到定时任务
# xxxx => xxx
  • 发现任务执行正常, 然后日志写入正常.
  • 退出容器, 查看日志/storage/logs, 发现了问题,
  • 直接进入容器默认是root身份,执行任务如果有日志输入,导致日志权限修改,如果有创建目录的也导致这个问题
  • 但是workspace容器里用的是laradock用户执行,导致无法正常运行
代码语言:javascript
复制
**** * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1
  • 我们先把所有目录权限设置正常
代码语言:javascript
复制
chmod -R 0777 storage
  • 进入容器使用身份
代码语言:javascript
复制
docker-compose exec --user=laradock workspace bash

2021-07-02 11:19:56 星期五 更新

  • 发现定时任务不执行, 排除了上面文件权限的问题, 通过laradock用户进入容器里, 可以正常执行命令
  • 查看workspace容器日志输出
  • docker-compose logs -f --tail 100 workspace
  • 输出里发现了问题所在 (发现定时任务后面多了一个^M)
代码语言:javascript
复制
workspace_1         | Jul  2 03:19:01 fac0b255876a CRON[344]: (CRON) info (No MTA installed, discarding output)
workspace_1         | Jul  2 03:20:01 fac0b255876a CRON[350]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /de
v/null 2>&1^M)
workspace_1         | Jul  2 03:20:01 fac0b255876a CRON[348]: (CRON) info (No MTA installed, discarding output)
workspace_1         | Jul  2 03:21:01 fac0b255876a CRON[354]: (laradock) CMD (/usr/bin/php /var/www/artisan schedule:run >> /de
v/null 2>&1^M)
  • 查了一下资料, 是Windowslinux换行影响的,会导致linux不能正常识别, 导致定时任务不能触发
  • 删除多余字符, 重新构建容器, 任务正常

多机部署workspace,为防止定时任务重复触发

  • 移除掉laradock/workspace/crontab/laradock文件里laravel的任务调度
  • 重新构建容器, 然后停止老的容器, 再启动新的, 请勿直接重启
  • docker-compose build workspace
  • docker-compose stop workspace && docker-compose up -d workspace
  • 使用php-worker容器来管理定时任务
  • 复制文件laravel-scheduler.conf.example重命名为laravel-scheduler.conf
  • 然后直接重启php-worker容器就可以加载新的任务
  • docker-compose restart php-worker
  • 进入容器内部查看任务状态
  • docker-compose exec php-worker sh
代码语言:javascript
复制
/etc/supervisor/conf.d # supervisorctl status
laravel-scheduler:laravel-scheduler_00   RUNNING   pid 9, uptime 2:14:33
  • 以上输出即代表定时任务正常运行
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2021-07-02 11:19:56 星期五 更新
  • 多机部署workspace,为防止定时任务重复触发
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档