ララコヌスでの最近の発表は、ララヴェルコミュニティ内のクラウドベースの展開に新たな関心を呼び起こしました。アプリの展開方法について議論が続くにつれて、1つのことが明らかです。クラウドはLaravelユーザーにとってより実行可能なオプションになりつつあります。 この記事では、frankenphp、caddy、dockerfilesを使用してクラウド環境で展開するためにLaravelアプリを準備する方法を紹介します。
では、どこから始めますか?もちろん、地元の環境で! ?#local開発環境
:
.env
それが確認されたら、構築を開始できます。 ? ☕️
生産環境によく似たローカル開発環境を持つことをお勧めします。このようにして、早期に問題をキャッチし、プロダクションにアプリを展開するときに驚きを避けることができます。
.env
dockerとdocker Composeを使用する生産セットアップを模倣するために。 Dockerがマシンにインストールされていない場合は、公式Webサイトからダウンロードできます。
データベースなしでlaravelを実行します
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
この構成ファイルは、Laravelアプリを実行するために必要な拡張機能を含むfrankenPhp画像である
画像を使用する
と呼ばれるサービスを定義します。構成をテストするには、端末で次のコマンドを実行してみてください。
compose.yml
ブラウザでドライバーが欠落しているため、接続がデータベースに確立されていないことを説明するLaravelエラーページが表示されます。 Laravelアプリをまだデータベースに接続していないため、これは予想されます。
次に、ローカルアプリをpostgreSQLデータベースに接続しましょう!compose.yml
データベースでlaravelを実行します
<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
最初に、php
ファイルに次の環境変数を設定する必要があります:dunglas/frankenphp:php8.3-bookworm
SERVER_NAME
8080
:8080
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
それに続いて、新しいサービスをcompose.yml
ファイルに追加し、開発環境向けにカスタムDockerfile
を作成する必要があります。次のコンテンツを使用してファイルを作成して更新します
:Dockerfile.dev
<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
は、ローカル/開発環境でのみ使用されることを目的としており、dunglas/frankenphp:php8.3-bookworm
画像を拡張します。
pdo_pgsql
compose.yml
<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
Dockerfile.dev
という新しいサービスを追加しました。また、データベースユーザー、パスワード、およびデータベース名を設定するためのいくつかの環境変数を定義しました。
db
postgres:16.4-alpine
と呼ばれる新しいサービスも、db_data
キーは、移行が実行される前にinit
サービスは、Laravelアプリが開始される前にデータベースの移行が実行されるようにDockerfile.dev
サービスに依存しています。
php artisan migrate
db
php
アプリケーションはPostgreSQLデータベースに接続する必要があり、データベースの移行は常に実行されます。 ?init
db
init
生産環境に必要な変更を加える時が来ました。という新しいファイルを作成し、次のコンテンツを追加します。
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql DB_HOST=db DB_PORT=5432 # default PostgreSQL port DB_DATABASE=main DB_USERNAME=admin DB_PASSWORD=password
このファイルは、
、
、および次に、制作イメージの構築に使用されるDockerfile
を作成します。
:Dockerfile
<!-- Syntax highlighted by torchlight.dev -->... DB_CONNECTION=pgsql ...
Dockerfile
frankenphp画像はデフォルトのWebサーバーとしてCaddyを使用するため、Dockerfile.dev
環境変数を
SERVER_NAME
PHP拡張機能をインストールします。
:8080
8080
コマンドは、laravelアプリの依存関係をインストールするために実行されます。
@composer
composer install
このコマンドは、現在のディレクトリの/app
新しく構築された生産画像をテストするには、次のコマンドを使用してください。
<!-- Syntax highlighted by torchlight.dev -->services: php: image: dunglas/frankenphp:php8.3-bookworm environment: SERVER_NAME: ":8080" ports: - 8080:8080 volumes: - .:/app
ファイルの変数に置き換えるか、ここからキーをつかみます。my-laravel-app
Dockerfile
ブラウザでLocalHost:8080にアクセスすると、アプリは生産モードで開始する必要があります。データベース接続がないためにエラーが発生する可能性がありますが、それは予想されます。
制作可能なDocker画像ができたので、クラウドプロバイダーに展開できます。 ?
<!-- Syntax highlighted by torchlight.dev -->docker compose up [-d]
ベースの展開を展開する簡単な方法を提供する新しいクラウドプロバイダーであるSevallaを使用します。
<your-app-key>
アプリはPostgreSQLデータベースに依存するため、Sevallaで新しいPostgreSQLデータベースを最初にプロビジョニングする方が良いでしょう。 Sevalla Dashboardにログインしたら、APP_KEY
.env
に移動します
postgreSQLデータベースを選択します
Dockerfile
データベースの準備ができたら、SevallaでLaravelアプリを作成できます。
で必要な環境変数を設定します
残りの設定を確認し、「後で展開」ボタンを押します
次に、データベースの接続の詳細を使用して、「環境変数」タブに次の環境変数を設定します。
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
値として使用することを推奨しました。これにより、アプリはプライベートネットワークを介してデータベースに接続できます。
DB_HOST
最後のステップは、アプリを開始する前に、アプリケーションがデータベースのmirgationを実行するためのジョブプロセスを設定することです。
「プロセス」タブ
に移動しますphp artisan migrate --force
設定を確認し、「作成」これも完了した場合、[展開]タブでアプリの手動展開を開始できるようになりました。 ?
すべてがうまくいったら、おめでとうございます!クラウド用のLaravelアプリを正常に準備しました。 ?
#conclusion
この記事では、以下を調査しましたdockerと
また、Sevallaのようなクラウドプロバイダーにアプリを展開する方法についても説明しました。
docker compose
#update:2024年9月8日)の代わりにDebianベースの画像(bookworm
)を使用して推奨されています。その結果、ファイルとalpine
の両方を更新しました。
Dockerfile.dev
コミュニティのサポートとフィードバックに感謝しています。 ? ❤️Dockerfile
以上がクラウド用のLaravelアプリを準備しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。