ホームページ > バックエンド開発 > PHPチュートリアル > [Laravel vx Docker] Laravel Sail を使用して Laravel アプリ開発環境を効率的にセットアップする

[Laravel vx Docker] Laravel Sail を使用して Laravel アプリ開発環境を効率的にセットアップする

Susan Sarandon
リリース: 2024-10-23 08:07:01
オリジナル
572 人が閲覧しました

Laravel Sail について

Laravel Sail は、Laravel フレームワークの公式開発環境です。 Sail は、Docker を使用して Laravel アプリケーション開発環境を簡単にセットアップおよび管理するための軽量のコマンドライン インターフェイス (CLI) を提供します。以下では、Laravel Sail の主な機能と使い方を説明します。

Laravel Sail を使用する利点

  1. OSに依存しない開発環境を構築
    • Sail は Docker を使用して、Laravel アプリケーションの開発環境をコンテナ化します。これにより、OSに依存しない開発環境を構築できます。
  2. 開発環境のセットアップが簡単
    • Sail を使用すると、いくつかのコマンドだけで Laravel 開発環境をセットアップできます。 MySQL、Redis、MailHogなどを使用した複雑な開発環境も簡単に構築できます。
  3. 異なるバージョンのプロジェクトを簡単に管理
    • 例えば、Laravel のバージョンは PHP のバージョンに依存しますが、docker-compose.yml ファイルでプロジェクトごとに環境を設定することで、簡単にバージョンを切り替えることができます。

[Laravel vx Docker] Efficiently Set Up a Laravel App Dev Environment with Laravel Sail
Laravel Sail で Docker を使用してプロジェクトを作成すると、上の図のような構造になります。

使用法

開発環境

  • マック
  • PHP v8.3
  • Laravel v11
  • ドッカー

前提条件

Laravel プロジェクトを作成する前に、Docker Desktop をダウンロードして起動します。
https://www.docker.com/products/docker-desktop/

1.Laravelプロジェクトの作成

次のコマンドを実行して、新しい Laravel プロジェクトを作成し、Laravel Sail をセットアップします。

curl -s "https://laravel.build/example-app" | bash
cd example-app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これにより、Laravel プロジェクト ファイルが作成されます。開発環境は、生成された docker-compose.yml ファイルに記述されています。

with クエリでサービスを指定する

PHP のバージョンを指定する場合、または MySQL の代わりに PostgreSQL を使用する場合は、プロジェクト生成時にコマンドで with=,,... を指定できます。

curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2. 出航

プロジェクト ディレクトリに移動し、Sail を開始します。

./vendor/bin/sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このコマンドは Docker コンテナを起動し、Laravel アプリケーションを実行します。

※別名を登録する

./vendor/bin/sail と入力するのは面倒なので、シェルの設定ファイルにエイリアス Sail として保存してください。

次のコマンドで使用しているシェルのパスを確認してください

echo $SHELL
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

例: /bin/zsh

シェル構成ファイルの編集

  • zsh の場合

シェル構成ファイルは ~/.zshrc です。
エイリアスを追加するには、次のコマンドを実行します

curl -s "https://laravel.build/example-app" | bash
cd example-app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • bash の場合

シェル設定ファイルは ~/.bash_profile または ~/.bashrc です。
エイリアスを追加するには、次のコマンドを実行します:

curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記の設定により、sail コマンドを短縮形式で実行できます。

./vendor/bin/sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3. セイルコマンドの使用

Sail を使用してさまざまな開発タスクを実行できます。以下にいくつかの例を示します。

  • アプリケーションの起動:
echo $SHELL
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • アプリケーションを停止します:
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc
source ~/.zshrc
ログイン後にコピー
ログイン後にコピー
  • アーティザン コマンドの実行:
echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile
source ~/.bash_profile
ログイン後にコピー
ログイン後にコピー
  • Composer コマンドの実行:
sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • npm コマンドの実行:
sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

4. サービスの変更

プロジェクトの作成後でも、Docker 構成ファイルである docker-compose.yml ファイルを変更することでサービスを変更できます。ここでは、PHPのバージョンと使用するデータベースを変更します。

PHPのバージョンを変更する

まず、現在の PHP バージョンを確認します

sail down
ログイン後にコピー
ログイン後にコピー

次に、docker-compose.yml ファイルに記述されている開発環境の情報を変更します。

sail artisan migrate
ログイン後にコピー

ビルド コンテキストとイメージを 8.1 に変更します。

sail composer install
ログイン後にコピー

docker-compose.yml を変更した後、アプリケーションを停止します。

sail npm install
ログイン後にコピー

次に、Docker コンテナを再構築して変更を反映します。

sail php -v
PHP 8.3.12 (cli) (built: Sep 27 2024 03:53:05) (NTS)
ログイン後にコピー

アプリケーションを再起動します。

services:
    laravel.test:
        build:
            context: "./vendor/laravel/sail/runtimes/8.3"
            dockerfile: Dockerfile
            args:
                WWWGROUP: "${WWWGROUP}"
        image: "sail-8.3/app"
ログイン後にコピー

PHP のバージョンが変更されているかどうかを確認します。

services:
    laravel.test:
        build:
            context: "./vendor/laravel/sail/runtimes/8.1"
            dockerfile: Dockerfile
            args:
                WWWGROUP: "${WWWGROUP}"
        image: "sail-8.1/app"
ログイン後にコピー

PHP のバージョンが PHP 8.3 から PHP 8.1 に変更されました。

使用するデータベースを変更する

MySQL で作成したプロジェクトを PostgreSQL に変更します。

Sail インストール コマンドを実行します

sail down
ログイン後にコピー
ログイン後にコピー

pgsql を選択

sail build --no-cache
ログイン後にコピー

docker-compose.yml ファイルをチェックし、pgsql エントリが追加されていることを確認します。

sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、プロジェクト ディレクトリ内の .env ファイルを開き、DB_CONNECTION=pgsql および DB_HOST=pgsql が設定されていることを確認します。
そうでない場合は、手動で変更してください。

sail php -v
PHP 8.1.30 (cli) (built: Sep 27 2024 04:07:29) (NTS)
ログイン後にコピー

docker-compose.yml と .env の変更を確認したら、アプリケーションを停止します。

sail php artisan sail:install
ログイン後にコピー

次に、Docker コンテナを再構築して変更を反映します。

 ┌ Which services would you like to install? ───────────────────┐
 │   ◼ mysql                                                  ┃ │
 │ › ◻ pgsql                                                  │ │
 │   ◻ mariadb                                                │ │
 │   ◻ redis                                                  │ │
 │   ◻ memcached                                              │ │
 └────────────────────────────────────────────────── 1 selected ┘
  Use the space bar to select options.
ログイン後にコピー

アプリケーションを再起動します。

services:
    laravel.test:
...
        depends_on:
            - mysql
            - redis
            - meilisearch
            - mailpit
            - selenium
            - pgsql
...
        pgsql:
            image: 'postgres:17'
            ports:
                - '${FORWARD_DB_PORT:-5432}:5432'
            environment:
                PGPASSWORD: '${DB_PASSWORD:-secret}'
                POSTGRES_DB: '${DB_DATABASE}'
                POSTGRES_USER: '${DB_USERNAME}'
                POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
            volumes:
                - 'sail-pgsql:/var/lib/postgresql/data'
                - './vendor/laravel/sail/database/pgsql/create-testing-database.sql:/docker-entrypoint-initdb.d/10-create-testing-database.sql'
            networks:
                - sail
            healthcheck:
                test:
                    - CMD
                    - pg_isready
                    - '-q'
                    - '-d'
                    - '${DB_DATABASE}'
                    - '-U'
                    - '${DB_USERNAME}'
                retries: 3
                timeout: 5s
ログイン後にコピー

移行ファイルを実行します。

DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=******
ログイン後にコピー

Docker でシェルを起動し、pgsql を確認します

現在実行中の Docker コンテナのリストを表示します。

curl -s "https://laravel.build/example-app" | bash
cd example-app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

アプリケーションのコンテナ名を確認し、Docker 内でアプリケーションの bash を開始します。

./vendor/bin/sail up -d
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

pgsql に接続します。

echo $SHELL
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

パスワードの入力を求められるので、.env ファイルで指定されている DB_PASSWORD を入力します。

echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.zshrc
source ~/.zshrc
ログイン後にコピー
ログイン後にコピー

pgsql でテーブルを確認します

echo "alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'" >> ~/.bash_profile
source ~/.bash_profile
ログイン後にコピー
ログイン後にコピー

このようにして、プロジェクト作成後でも MySQL から PostgreSQL に変更することができます。

結論

この記事を通じて、Laravel Sail を使用して開発環境を効率的にセットアップおよび管理する方法を理解します。プロジェクトの要件に応じて適切なサービスを選択し、設定をカスタマイズすることで、より柔軟で強力な開発環境を実現できます。

以上が[Laravel vx Docker] Laravel Sail を使用して Laravel アプリ開発環境を効率的にセットアップするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート