BackEnd

Laravel SailでDocker環境構築

投稿日:2021年1月25日 更新日:

はじめに

Laravel Sailは、2020年末に正式版となった、Laravel公式のローカルDocker環境と、Docker環境を便利に使用できるコマンド群です。Laravel公式ドキュメントでも、Laravelのセットアップ方法として説明されています。今回は、Laravel Sailがどのような構成であるか、またよく使用すると思われるコマンドを紹介します。

Laravel Sailの基本

Laravel Sailは、macOS、Linux、Windows(WSL2)で動作するDockerコンテナを構築します。

Dockerの構成

Laravel 8をセットアップすると、自動的に docker-compose.yml が生成されます。また、sail自体も最初から入っています。ポートフォワードなどの設定方法については後ほど説明しますが、構成についてはこのようになっています。

  • laravel.test
    UbuntuベースのオリジナルのDockerイメージです。 php artisan serve コマンドでWebサーバを起動させます。
  • mysql
    mysql:8.0 イメージが使用されています。
  • redis
    redis:alpine イメージが使用されています。
  • mailhog
    mailhog/mailhog:latest イメージが使用されています。

コンテナの起動・停止

基本的には、docker-composeコマンドと同じです。

初回起動の場合は、しばらくするとコンテナが起動します。初期設定の場合は、 http://localhost にブラウザでアクセスすると、Laravelの初期画面が表示されます。

sailで使用できるコマンド

./vendor/bin/sail artisan のように、sailではサブコマンドが用意されています。このサブコマンドは、 laravel.test コンテナ内で実行されるため、ローカルでパッケージのインストールは必要ありません。
ちなみに、下記に含まれないサブコマンドを実行したときは、全て docker-compose のサブコマンドとして実行されます。( upstop など)

  • php
  • composer
  • artisan
  • test
  • dusk
  • tinker
  • node
  • npm
  • npx
  • yarn
  • mysql
  • psql
  • shell / bash
  • root-shell
  • share

Laravel Sailの設定

よく使うと思われるLaravel Sailの設定を紹介します。

ポートフォワードの設定

laravel.test コンテナ、 mysql コンテナのポートフォワードを設定するには、.envファイルに設定します。

docker-compose.yml側では、以下のように記述されているため、設定したポートフォワードが反映されます。

PHPのバージョン切り替え

標準では、PHP 8が使われていますが、PHP 7.4に切り替えることもできます。あえて、PHP7.4を使用したい場合は、docker-compose.ymlの laravel.test コンテナを次のように修正します。

laravel.testコンテナのカスタマイズ

さらに一歩踏み込み、 laravel.test コンテナを構成するDockerfile、php.iniなどをカスタマイズするには、 ./vendor/bin/sail artisan sail:publish コマンドで設定ファイルをコピーすることができます。dockerディレクトリ配下に以下のファイルが生成されます。

7.4、8.0ディレクトリはPHPのバージョンを指します。不要なバージョンは削除して良いと思います。

さいごに

Laravel Sailは、ミニマムなコンテナを構築することができるため、良いテンプレートだと思いました。Docker初心者でも、簡単に構築することができ、また基本はdocker-compose.ymlやDockerファイルの変更によってカスタマイズが必要なので、Dockerの知識さえあればこれまでと同じようにカスタマイズできる点が特徴だと思いました。

おすすめ書籍

PHPフレームワークLaravel入門 第2版 PHPフレームワーク Laravel実践開発 PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 よくわかるPHPの教科書 【PHP7対応版】

page_footer_responsive




-BackEnd
-, ,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

WebアプリケーションにLINEログインを組み込む

1 はじめに2 LINEログインとは2.1 LINEログインでできること2.2 LINEログインのフロー3 LINEログインの設定3.1 プロバイダーを新規作成する3.2 チャネルを作成する3.3 リ ...

麻雀で自分が何を切るか学習させる

1 はじめに2 プロジェクト名を決めてみる3 何切る問題で考慮される要素3.1 手牌3.2 ドラ3.3 考慮していない要素(本当は入れたい)4 学習の方法5 さいごに はじめに 前回執筆しました、配牌 ...

Vue.js入門その4〜TODOアプリにサーバーサイドを追加してみる〜

1 はじめに2 準備2.1 今回作成したいもの2.2 環境構築3 サーバーサイド3.1 DB3.2 メモ:rails generateで余分なファイルを生成しない3.3 作成したファイル4 ビューの作 ...

rails

Railsでの非同期処理とDelayed Job

1 はじめに2 Active Job2.1 Active Jobの役割2.2 ジョブを作成する2.3 ジョブをキューに登録する2.4 コールバック2.5 例外3 Delayed Job3.1 設定3. ...

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

フォロー

blog-page_side_responsive

2021年1月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。