Laravel Sail は、Laravel フレームワークの公式開発環境です。 Sail は、Docker を使用して Laravel アプリケーション開発環境を簡単にセットアップおよび管理するための軽量のコマンドライン インターフェイス (CLI) を提供します。以下では、Laravel Sail の主な機能と使い方を説明します。
Laravel Sail で Docker を使用してプロジェクトを作成すると、上の図のような構造になります。
開発環境
前提条件
Laravel プロジェクトを作成する前に、Docker Desktop をダウンロードして起動します。
https://www.docker.com/products/docker-desktop/
次のコマンドを実行して、新しい Laravel プロジェクトを作成し、Laravel Sail をセットアップします。
curl -s "https://laravel.build/example-app" | bash cd example-app
これにより、Laravel プロジェクト ファイルが作成されます。開発環境は、生成された docker-compose.yml ファイルに記述されています。
PHP のバージョンを指定する場合、または MySQL の代わりに PostgreSQL を使用する場合は、プロジェクト生成時にコマンドで with=
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
プロジェクト ディレクトリに移動し、Sail を開始します。
./vendor/bin/sail up -d
このコマンドは Docker コンテナを起動し、Laravel アプリケーションを実行します。
./vendor/bin/sail と入力するのは面倒なので、シェルの設定ファイルにエイリアス Sail として保存してください。
次のコマンドで使用しているシェルのパスを確認してください
echo $SHELL
例: /bin/zsh
シェル構成ファイルの編集
シェル構成ファイルは ~/.zshrc です。
エイリアスを追加するには、次のコマンドを実行します
curl -s "https://laravel.build/example-app" | bash cd example-app
シェル設定ファイルは ~/.bash_profile または ~/.bashrc です。
エイリアスを追加するには、次のコマンドを実行します:
curl -s "https://laravel.build/example-app?php=81&with=pgsql,redis" | bash
上記の設定により、sail コマンドを短縮形式で実行できます。
./vendor/bin/sail up -d
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
sail up -d
sail up -d
プロジェクトの作成後でも、Docker 構成ファイルである docker-compose.yml ファイルを変更することでサービスを変更できます。ここでは、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 サイトの他の関連記事を参照してください。