このページはコミュニティによって翻訳されたもので、最新ではない可能性があります。参照用のバージョンをご覧ください。
このページはコミュニティによって翻訳されたもので、最新ではない可能性があります。参照用のバージョンをご覧ください。
このページはコミュニティによって翻訳されたもので、最新ではない可能性があります。参照用のバージョンをご覧ください。
FrankenPHPを使用してLaravelのWebアプリケーションを配信するのは簡単で、公式Dockerイメージの/app
ディレクトリにプロジェクトをマウントするだけです。
Laravelアプリのメインディレクトリからこのコマンドを実行してください:
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp
お楽しみください!
または、ローカルマシンでFrankenPHPを使用してLaravelプロジェクトを実行することもできます:
LaravelプロジェクトのルートディレクトリにCaddyfile
という名前のファイルを作成し、以下の設定を追加します:
{
frankenphp
}
# サーバーのドメイン名
localhost {
# webroot を public/ ディレクトリに設定
root public/
# 圧縮を有効にする(任意)
encode zstd br gzip
# public/ ディレクトリ内の PHP ファイルを実行し、アセットを提供
php_server {
try_files {path} index.php
}
}
LaravelプロジェクトのルートディレクトリからFrankenPHPを起動します: frankenphp run
OctaneはComposerパッケージマネージャーを使用してインストールできます:
composer require laravel/octane
Octaneをインストールした後、octane:install
Artisanコマンドを実行すると、Octaneの設定ファイルがアプリケーションにインストールされます:
php artisan octane:install --server=frankenphp
Octaneサーバーはoctane:frankenphp
Artisanコマンドで開始できます。
php artisan octane:frankenphp
octane:frankenphp
コマンドは以下のオプションが利用可能です:
--host
: サーバーがバインドするIPアドレス(デフォルト:127.0.0.1
)--port
: サーバーが使用するポート(デフォルト: 8000
)--admin-port
: 管理サーバーが使用するポート(デフォルト: 2019
)--workers
: リクエスト処理に使うワーカー数(デフォルト: auto
)--max-requests
: サーバーを再起動するまでに処理するリクエスト数(デフォルト: 500
)--caddyfile
: FrankenPHPのCaddyfile
ファイルのパス(デフォルト: Laravel OctaneのスタブCaddyfile)--https
: HTTPS、HTTP/2、HTTP/3を有効にし、証明書を自動的に生成・更新する--http-redirect
: HTTPからHTTPSへのリダイレクトを有効にする(–httpsオプション指定時のみ有効)--watch
: アプリケーションが変更されたときに自動的にサーバーをリロードする--poll
: ネットワーク越しのファイル監視のためにファイルシステムポーリングを使用する--log-level
: ネイティブCaddyロガーを使用して、指定されたログレベル以上でログメッセージを記録するTip
構造化されたJSONログ(ログ分析ソリューションを使用する際に便利)を取得するには、明示的に
–log-level
オプションを指定してください。
詳しくはLaravel Octaneの公式ドキュメントをご覧ください。
FrankenPHPのアプリケーション埋め込み機能を使用して、Laravelアプリをスタンドアロンバイナリとして 配布することが可能です。
LaravelアプリをLinux用のスタンドアロンバイナリとしてパッケージ化するには、以下の手順に従ってください:
アプリのリポジトリにstatic-build.Dockerfile
という名前のファイルを作成します:
FROM --platform=linux/amd64 dunglas/frankenphp:static-builder
# アプリをコピー
WORKDIR /go/src/app/dist/app
COPY . .
# スペースを節約するためにテストやその他の不要なファイルを削除
# 代わりに .dockerignore に記述して除外することも可能
RUN rm -Rf tests/
# .envファイルをコピー
RUN cp .env.example .env
# APP_ENV と APP_DEBUG を本番用に変更
RUN sed -i'' -e 's/^APP_ENV=.*/APP_ENV=production/' -e 's/^APP_DEBUG=.*/APP_DEBUG=false/' .env
# 必要に応じて .env ファイルにさらに変更を加える
# 依存関係をインストール
RUN composer install --ignore-platform-reqs --no-dev -a
# 静的バイナリをビルド
WORKDIR /go/src/app/
RUN EMBED=dist/app/ ./build-static.sh
Caution
一部の
.dockerignore
ファイルはvendor/
ディレクトリや.env
ファイルを無視します。ビルド前に.dockerignore
ファイルを調整または削除してください。
ビルドします:
docker build -t static-laravel-app -f static-build.Dockerfile .
バイナリを取り出します:
docker cp $(docker create --name static-laravel-app-tmp static-laravel-app):/go/src/app/dist/frankenphp-linux-x86_64 frankenphp ; docker rm static-laravel-app-tmp
キャッシュを構築します:
frankenphp php-cli artisan optimize
データベースマイグレーションを実行します(ある場合):
frankenphp php-cli artisan migrate
アプリの秘密鍵を生成します:
frankenphp php-cli artisan key:generate
サーバーを起動します:
frankenphp php-server
これで、アプリの準備は完了です!
利用可能なオプションや他のOSでバイナリをビルドする方法については、アプリケーション埋め込みドキュメントをご覧ください。
Laravelはアップロードされたファイルやキャッシュ、ログなどをデフォルトでアプリケーションのstorage/
ディレクトリに保存します。
しかし、これは埋め込みアプリケーションには適していません。なぜなら、アプリの新しいバージョンごとに異なる一時ディレクトリに展開されるためです。
この問題を回避するには、LARAVEL_STORAGE_PATH
環境変数を設定(例:.env
ファイル内)するか、 Illuminate\Foundation\Application::useStoragePath()
メソッドを呼び出して、一時ディレクトリの外にある任意のディレクトリを使用してください。
Laravel Octaneアプリもスタンドアロンバイナリとしてパッケージ化することが可能です!
そのためには、Octaneを正しくインストールし、前のセクションで説明した手順に従ってください。
次に、Octaneを通じてワーカーモードでFrankenPHPを起動するには、以下を実行してください:
PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp
このページを編集Caution
コマンドを動作させるためには、スタンドアロンバイナリのファイル名が必ず
frankenphp
でなければなりません。 Octaneはfrankenphp
という名前の実行ファイルがパス上に存在することを前提としています。