LoginSignup
8
7

More than 1 year has passed since last update.

Laravel9 + Fargate に Supervisor を導入

Posted at

はじめに

初期構築

下記記事を参考に初期構築をします。

リポジトリはこちら

Supervisorを導入

Dockerfileを編集

./docker/php/Dockerfile内を2箇所修正します。

./docker/php/Dockerfile
FROM php:8.1-fpm-bullseye

ENV TZ=Asia/Tokyo \
  # locale
  LANG=ja_JP.UTF-8 \
  LANGUAGE=ja_JP:ja \
  LC_ALL=ja_JP.UTF-8 \
  # composer environment
  COMPOSER_ALLOW_SUPERUSER=1 \
  COMPOSER_HOME=/composer

COPY --from=composer:2.3 /usr/bin/composer /usr/bin/composer

RUN apt-get update \
  && apt-get -y install --no-install-recommends \
    locales \
    git \
    libzip-dev \
    libicu-dev \
    libonig-dev \
+   supervisor \
    unzip \
    vim \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && locale-gen ja_JP.UTF-8 \
  && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 \
  && docker-php-ext-install \
    bcmath \
    intl \
    pdo_mysql \
    zip \
  && composer config -g process-timeout 3600 \
  && composer config -g repos.packagist composer https://packagist.org

COPY ./src /var/www/html
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini
+ COPY ./docker/php/laravel-worker.conf /etc/supervisor/conf.d

WORKDIR /var/www/html
RUN composer install -q -n --no-ansi --no-dev --no-scripts --no-progress --prefer-dist \
  && chown -R www-data:www-data ./ \
  && chmod -R 777 storage bootstrap/cache \
  && php artisan optimize:clear \
  && php artisan optimize \
  && php artisan cache:clear \
  && php artisan config:clear \
  && php artisan route:clear \
  && php artisan view:clear \

管理プロセス設定ファイルを./docker/php/laravel-worker.confという名前にして、作成します。

./docker/php/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker.log

fargateの側のルートディレクトリを/var/www/html/と想定した場合の設定になります。

タスク定義を変更する

タスク定義で、Supervisorを起動させるコマンドを追加させる必要があります。

タスク定義のコマンド変更前

php artisan config:cache && php artisan view:cache && php artisan route:cache && php artisan migrate --force && chown -hR www-data:www-data storage bootstrap/cache && php-fpm && composer install --optimize-autoloader --no-dev

タスク定義のコマンド変更後

service supervisor start && php artisan config:cache && php artisan view:cache && php artisan route:cache && php artisan migrate --force && chown -hR www-data:www-data storage bootstrap/cache && php-fpm && composer install --optimize-autoloader --no-dev

先頭にservice supervisor start &&を追加しただけです。

スクリーンショット 2022-11-12 16.53.53.png

注意
service supervisor start &&をコマンドの先頭ではなく、最後に持ってくると、supervisorが起動しませんでした。
必ず先頭に持っていきましょう。

これで、fargateのタスクが立ち上がると、supervisorが起動します。

supervisorの起動を確認

ECS EXECでfargateのタスク内に入ります。

ECS EXEC方法は、下記記事を参考にしてください。

タスク定義のコマンド変更前

# service supervisor status
supervisord is  not running.
# service supervisor start 
Starting supervisor: supervisord.
# exit

タスク定義変更後

# service supervisor status
supervisord is running
# supervisorctl status
laravel-worker:laravel-worker_00   RUNNING   pid 32, uptime 0:08:48
laravel-worker:laravel-worker_01   RUNNING   pid 33, uptime 0:08:48

laravel-workerを確認できました。

参考

supervisordのコマンド

8
7
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
8
7