服务器环境是用docker搭建的,开发后期业务场景需要使用crond
执行定时脚本任务。
记录下解决问题的过程
1.首先我想到在宿主机在安装个php,但是有个问题mysql也在容器里面,通信存在问题
2.在宿主机调用容器的php
2 方案参考大佬文章是这么处理的。
touch /usr/bin/php7cli
chmod +x /usr/bin/php7cli
vim /usr/bin/php7cli
写入下面的命令
#!/bin/bash
if [ ! -n "$1" ]; then
echo "参数不能为空!"
else
docker run -it --rm -v $PWD:/tmp -w /tmp php:7.1-fpm "$@"
fi
执行命令
php7cli php --version
一切都朝预期的方向发展,但是遇到了个问题,不懂是不是由于pdo扩展是后面安装的,执行命令的时候无法找到pdo驱动
,解决问题失败。
后面又找到了一个解决方案,通过下面的命令执行
docker exec -it fpm-mysql bash -c "cd /www/yjbao;php think charge"
正常执行,于是我放到了crontab里面
*/1 * * * * docker exec -it fpm-mysql bash -c "cd /www/yjbao;php think charge"
等了半天没看到结果,在crontab邮件里面看到内容
the input device is not a TTY
重新调整命令,把t
去掉
*/1 * * * * docker exec -i fpm-mysql bash -c "cd /www/yjbao;php think charge"
完美解决