LoginSignup
0
1

Laravel OctaneをDockerで動かす

Last updated at Posted at 2024-03-13

Laravel Octane

Laravel Octaneは、アプリケーションの起動後全ての処理をメモリ上にロードした状態を維持しリクエスト間で使い回すことによって、高速なアプリケーションを提供するツールです。

SwooleやOpenSwooleなどを使った非同期処理のアプリケーションサーバーに載せることができます。またApacheやNginx不要でWebサーバーを建てることができます。

そこで今回はこの「Laravel Octane」をDockerで動かしてみました。

やってみる

ディレクトリ構成

├── octane-server
│   ├── app
│   ├── bootstrap
│   ...
│    
└── Dockerfile

とりあえず公式の手順に従ってLaravelのプロジェクトを作成します。

$ composer create-project laravel/laravel octane-server
$ cd octane-server

次にLaravel Octaneのインストール手順に従いcomposerにoctaneを追加します。

$composer require laravel/octane

(実際にはローカルでも試しましたが)Dockerfileをこんな感じで書きました。

FROM php:8.3

RUN apt-get update

RUN pecl install swoole && docker-php-ext-enable swoole

COPY ./octane-server /app

WORKDIR /app

ENV COMPOSER_ALLOW_SUPERUSER=1

COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN composer install

RUN php artisan octane:install --server=swoole

RUN docker-php-ext-install pcntl

ENTRYPOINT [ "php", "artisan", "octane:start", "--host", "0.0.0.0"]

1.RUN pecl install swoole && docker-php-ext-enable swoole

Laravel OctaneはFrankenPHP, Swoole, OpenSwoole, RoadRunnerからWebサーバーを選択できます。今回は、たまたまSwooleの本を読んでいたのでSwooleにしました。

SwooleはPHPのPECL拡張なので、インストールと有効化を済ませる必要があります。
PHP official imageを使用したので、提供されるコマンドで有効化します。

2.RUN php artisan octane:install --server=swoole

オプションでswooleを指定します。

3.RUN docker-php-ext-install pcntl

pctnlはPHPのプロセス制御を行う機能で非同期処理の実行に必要なようです。

4.ENTRYPOINT [ "php", "artisan", "octane:start", "--host", "0.0.0.0"]

ENTRYPOINTでサーバーを立ち上げます。Octaneはデフォルトではport8000でサーバーを起動します。ホストは0.0.0.0を指定しないとアクセスできません。

ビルドして立ち上げ、http://127.0.0.1:8000にアクセスしLaravelの画面が開けると成功です :clap:

$ docker build . -t octane-server
$ docker run -p 8000:8000 octane-server

   INFO  Server running…

  Local: http://0.0.0.0:8000 

  Press Ctrl+C to stop the server

  200    GET / .............................................. 21.26 mb 36.45 ms

スクリーンショット 2024-03-13 23.12.13.png

さいごに

Laravel Octaneは、アプリケーションの起動後全ての処理をメモリ上にロードした状態を> 維持し、リクエスト間で使い回すことによって高速なアプリケーションを提供するツールです。

このような仕組みの関係上、実装上注意する点もありそう(依存注入とOctane)だったり、情報がまだ乏しいのは欠点ですが、Laravelで超高速なサーバーを構築できるのは魅力的だと思いました。

参考資料

以下の記事や書籍を参考にさせていただきました。ありがとうございます。

Swooleで学ぶPHP非同期処理 ~並行処理/並列処理の基礎から実践的な開発手法まで一気にわかる

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