0
1

More than 1 year has passed since last update.

supervisor docker構築 使用方法

Posted at

Supervisor構築

今回のインフラ構成

Dockerのコンテナ

- Laravel(phpコンテナ)
- Nginx
- dbサーバ(mysql)

suervisor導入理由

laravelにはデフォルトで以下のコマンドが存在するが落ちる可能性が高く落ちたときにjobバッチが実行されない危険性があったのでsupervisorを導入してlinux上で監視させ落ちたときに自動で再起動させるように設定

php artisan queue:work

実装方法

まずsupervisorを導入したいコンテナのdockerFileにsupervisorインストールさせるコマンドを追記する
今回はphpコンテナを監視させたいのでphpのdockerFileに以下を追記する

RUN apt-get update supervisor

次にsupervisord.conf(設定ファイル)を作成する

[supervisord]
// trueに設定しないと起動時にデーモンモードになってしまい落ちるので必ずtureにする
nodaemon=true

[program:php-fpm]
command=php-fpm --nodaemonize
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0


// xxxはjob実行時にdispatchするQueueの名前
[program:xxx]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work --queue=xxx --timeout=0 --backoff=10
autostart=true
autorestart=true
user=root
numprocs=3
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

そしてこのsupervisord.confをdockerコンテナ上にコピーするコマンドをphpのdockerfileに記入

RUN mkdir -p /var/log/supervisor
COPY ./supervisord.conf /etc/supervisor/conf.d

これでdockerを立ち上げ直すとsupervisorが使用できるようになります

使用するコマンド

  • Jobを修正した場合は以下のコマンドを実行し直しsupervisorを立ち上げ直す必要がある
supervisorctl reload
  • supervisorが起動しているかどうかの確認
supervisorctl status

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1