環境
hostはLinux
Dockerコンテナ起動中
コンテナはPHP
PHPフレームワークはLaravel
前提
PHPコンテナで、Laravelのバッチが動いていることとします。
ホスト側でDockerコマンドのバッチを実行する
下記コマンド①②のどちらかをホストから実行できるか確認してください。
- ホストで実行
①
docker-compose exec 【サービス名】 php artisan command:【バッチ】
②
docker exec 【コンテナ名】 php artisan command:【バッチ】
Cron設定
- 実行が確認できれば、ホストのcrontabを、拡張子のないファイル名で
test_cron
コピーする
$ sudo cp /etc/crontab /etc/cron.d/test_cron
- ホストで実行
5分毎に実行する
*/5 * * * * ec2-user cd /home/ec2-user/【Laraveプロジェクトディレクトリ】 && docker exec 【コンテナ名】 php artisan command:【バッチ】 1> /dev/null
cron再起動
$ sudo systemctl restart crond.service
cronステータス
$ sudo systemctl status crond.service
以上