🙌

私的 Laravel Sail 構成

2022/08/06に公開

Vite 版の Laravel 開発環境、Laravel Sail か自分で構成するか

Laravel が v9.2 から Vite 対応になりました。
以前の記事↓のように Node を個別のコンテナに分けても使えないことはないのですが、ちょっと設定を変える必要があるので試行錯誤中です。

https://zenn.dev/blancpanda/articles/docker-laravel-2022

一応個別コンテナでの構成も作ってはみたのですが(この記事の最後にリポジトリを掲載)、
Laravel Sail の構成をいじるのとどっちがいいかなぁと。

Laravel Sail も中身は Docker なので、自分好みに変更してから使おうという話です。

1. Laravel Sail を使った Laravel のインストール

まず、ドキュメントの"Sailサービスの選択"の方法で Laravel をインストールする。

  • example-app の部分は適宜変更
  • mysql だけでいいのでクエリパラメータ with で mysql のみ指定
    (データベースの変更や redis, meilisearch など他のコンテナを使用する場合はここで取捨選択)
  • わたしは Mac ユーザで zsh を使っているので bash を zsh に置き換え
curl -s "https://laravel.build/example-app?with=mysql" | zsh
# ...インストールの最後にパスワードを求められる(おそらく sail コマンドなどのパーミッション変更のため)
code example-app # vscode で開く

2. MySQL コンテナを修正

sail up する前に mysql のコンテナの設定を変える。

  1. docker/mysql ディレクトリ作成
    プロジェクトルートで実行

    mkdir -p docker/mysql
    
  2. Dockerfile, my.cnf 作成
    1 で作成したディレクトリに MySQL 用の Dockerfile と設定ファイル my.cnf を置く。

https://github.com/blancpanda/laravel-sail-dockerfiles/blob/9d39ddeb6695894a14ce80d8875eb4f50642ac78/docker/mysql/Dockerfile#L1-L18

https://github.com/blancpanda/laravel-sail-dockerfiles/blob/9d39ddeb6695894a14ce80d8875eb4f50642ac78/docker/mysql/my.cnf#L1-L37

  1. docker-compose.yml 編集
    プロジェクト直下の docker-compose.yml を編集する。
    mysql コンテナを 2 で作成した Dockerfile をもとにビルドするように書き換える。

https://github.com/blancpanda/laravel-sail-dockerfiles/blob/9d39ddeb6695894a14ce80d8875eb4f50642ac78/docker-compose.yml#L27-L55

3.動作確認

1. Docker 起動

./vendor/bin/sail up -d     # バックグラウンド起動

※ sail コマンドのエイリアスの指定をしておくといい
(以降、エイリアス指定済みとして sail に省略)
zsh の場合は ~/.zshrc に追記

2. 初期設定

  • config 以下の設定確認

    • app.php の timezone, locale etc.
    • database.php の mysql の collation
  • Jetstream をインストールするならここで

3. マイグレーション

sail artisan migrate

Vite 開発サーバ起動

sail npm run dev
  • 止めるときは Ctrl + c

Docker 停止

sail stop

おまけ) Vite 対応 Docker 構成
https://github.com/blancpanda/docker-laravel-vite

Discussion