【docker】Laravelのキューを使って非同期処理。content【docker】Laravelのキューを使って非同期処理。Dockerにsupervisorをインストールして起動するまでのセットアップ手順Laravel非同期処理Dockersupervisorlaravel5開発でdockerとLaravelを使っており、非同期処理を実装する必要がありました。バックグラウンドでプロセスを永続的に実行する必要があったため、Supervisorを使用する必要がありました。そこで今回は「dockerにSupervisorをインストールして使えるようになるまでのセットアップ手順」を書いていきます。linux/amd64主なコマンドと設定ファイル今回使用する主なコマンドと必要な設定ファイルが下記になります。それぞれについて下で解説していきます。入れるというようにありました。今回はgitでも管理がしたかったため、プロジェクト内に設定フォルダを作成して、その中に入れるようにしました。設定ファイルの場所は後ほどパスで指定するため、フォルダを作る場所はどこでも良いと思います。ファイルを作成します。/var/www/mypage/supervisor/supervisord.conf4.設定ファイルの修正3.で作成したファイルに対して変更を加えます。ほとんどがコメントアウトなので必要な変更箇所は見つけやすいと思います。先程作成したディレクトリとファイルを指定。/var/www/mypage/supervisor/conf.d/*.conf5.実行ファイル「laravel-worker.conf」を修正まず、laravel公式ドキュメントのファイル内容をコピー。開発環境に合わせて修正しました。公式ドキュメントはforgeを使っていました。ここは自分のディレクトリ構成に合わせて変更します。コマンドを入力しているパスを入力すれば良いです。sqsをredisに変更します。オプションで設定できます。--sleep=3autostart=trueautorestart=trueuser=rootnumprocs=2redirect_stderr=truestdout_logfile=/var/www/mypage/storage/logs/supervisor/worker.log6.envファイルの該当箇所をsyncからredisに変更envファイルの下記箇所をsyncからredisに変更します。syncの場合は同期で実行されるので動作確認の際にはsyncに戻して実行しました。QUEUE_CONNECTION=redis7.実行!下記コマンドでsupervisorを起動することができます。./supervisor/supervisord.conf■気づき・laravelの公式ドキュメントはforgeの使用を勧めてくる。そのため、ドキュメントに書いてある設定ファイルにはforgeがふんだんに使われていたのでそれによるエラーが度々生じました。↓めっちゃ勧めてくる。Forgeの使用を考慮してください。・dockerに導入する記事が余りない。開発環境にdockerを使用していたため、dockerにsupervisorを入れて使用したかったのですが、dockerで非同期処理をする記事があまりありませんでした。今回の記事がお役に立てば嬉しいです。■プロセス確認コマンド等これで親のプロセス(supervisor)が生きていれば子のプロセス(queue)が死んでも生き続ける。停止したいときには親のプロセスをkillする。killするしか停止する方法はないと思います。requestStockLike2たかふみ@wallkickers学んだことを形にするのが好きなWebエンジニアです。前職は広告を売ったり、企業の情報発信をお手伝いしたりしていました。「あったら便利だな」をプログラミングで作っています。upLoginユーザーは見つかりませんでした。