Contents
Laravel + Docker(Sail)構築手順 – Windows版
Laravelインストール手順
VSCode起動してターミナルを起動してUbuntsを選択します
【VSCodeの場合】
Ubuntu(WSL)に切り替える
ターミナル右上の + 横の 下矢印ボタン ⏷ をクリック
実際にダウンロードされるスクリプトの中身からDockerコマンドが実行されるため、Ubunts内で行う必要がありますね!
WSL2 上で一般ユーザーでログインしないと権限のエラーが発生してしまう(プロジェクトのファイルやディレクトリがrootユーザーによって作成されるため、Laravel Sailがアクセスできないため)
原因はプロジェクトを root ユーザーで作成した環境。
推奨対策は一般ユーザーを作成し、それを Docker グループに追加 → そのユーザーで Laravel プロジェクト作成
https://biz.addisteria.com/laravel-sail_ubuntu_permission
# 1. 一般ユーザーの作成(rootユーザーで実行)
sudo adduser yourname
# パスワード設定やユーザー情報は適宜入力(すべてEnterでスキップ可能)
# 2. Docker操作権限を与える
sudo usermod -aG docker yourname
# 3. グループに追加されているか確認
sudo groups yourname
# → 出力例: yourname : yourname users docker
# 4. 作成したユーザーに切り替える
su - yourname
上記で今いる場所は一般ユーザー(yourname)でのそのホームディレクトリになります
こちらWSL2のLinuxネイティブファイルシステム内で権限問題も発生しないので⭕
yourname@LAPTOP-2C4PL9J8:~$ pwd
/home/yourname
yourname@LAPTOP-2C4PL9J8:~$ ls -a
. .. .bash_logout .bashrc .landscape .motd_shown .profile
yourname@LAPTOP-2C4PL9J8:~$
Windows PC
├── C:\Users\username\ ← Windows側ユーザーディレクトリ(NTFS)
│ └── … ← WSL2 からは /mnt/c/Users/username/ でアクセス
│ × Laravelプロジェクトを置くと:
│ - パーミッションが効かない
│ - ファイルアクセスが遅い
│ - DockerとLaravel Sailでエラー多発
│
└── WSL2 Linux 仮想マシン(ext4)
├── / ← Linuxファイルシステムのルート
├── /home/
│ └── yourname/ ← 一般ユーザーのホームディレクトリ
│ ├── .bashrc
│ ├── .profile
│ └── dev/ ← ★ Laravelプロジェクトはここに作成すべき
│ └── laravel/ ← `curl -s https://laravel.build/laravel | bash`
│
├── /root/ ← rootユーザー専用ホーム(使わないこと)
│
└── /mnt/ ← Windowsドライブのマウントポイント
└── /c/
└── /Users/
└── username/ ← WindowsのC:\Users\username に対応
Laravel 作成前の注意
Laravelプロジェクト作成 (curl https://laravel.build/... | bash
) を実行する前に、
ログイン中のユーザーが本当に一般ユーザー(widaなど)であることを必ず確認してください。
ターミナルの見た目で username@LAPTOP-...
と表示されていても、su - username
等で切り替えた場合は 中身が root のままになっているケースがあります。
これに気づかず Laravel を作成すると、全ファイルが root 所有になり、後々の composer, artisan, npm すべてが破綻します。
whoami # → wida であること
id # → uid=1001(wida) など、uid=0(root) でないことを確認
Laravelファイル群を生成するだけでなく、Docker化された完全な開発環境を一括でセットアップされます
username@LAPTOP-2C4PL9J8:~$ mkdir -p ~/dev
username@LAPTOP-2C4PL9J8:~$ cd dev/
username@LAPTOP-2C4PL9J8:~/dev$ curl -s https://laravel.build/laravel | bash
# タイムアウトで失敗したら10分に延長して再度実行(結構時間かかりますね、、)
export COMPOSER_PROCESS_TIMEOUT=600
Laravel Sailを起動
cd laravel
./vendor/bin/sail up -d
file_put_contents(…): Failed to open stream: Permission denied
Laravel Sailを起動してlocalhostにアクセスするとfile_put_contents(…): Failed to open stream: Permission deniedというエラー、、
原因はLaravel内部の storage/ や bootstrap/cache/ に書き込み権限がないため、、
rootでなく一般ユーザーでLaravelプロジェクトを作成したのですが、それでもLaravel Sailから書き込みができるようパーミッション修正が必要なのです
(解決手順)
対処にはroot権限が必要になるのですが、現在は一般ユーザーの状態でrootに切り替える必要があります
root に切り替えて一般ユーザーに sudo 権限を付与
usermod -aG sudo username
今度は一般ユーザーにまた戻して
cd ~/dev/laravel
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R $(whoami):www-data storage bootstrap/cache
rootのパスワード忘れた場合
# PowerShellから root で強制ログインしてパスワード再設定
wsl -u root
passwd
データベースマイグレーションを実行
./vendor/bin/sail artisan migrate
http://localhostでウェルカムページが表示されます!
WSLでVSCodeを安定して使う方法
# WSLのデフォルトユーザーを wida に変更
sudo nano /etc/wsl.conf
# 追記
[user]
default=wida
# PowerShellで
wsl --shutdown
VSCode Remote – WSL を初回だけ Windows から手動で起動
- Windowsで VSCode を起動
- Ctrl + Shift + P → Remote-WSL: Connect to WSL using Distro
- Ubuntu を選択
- 初回接続時に VSCode Serverがインストールされる
- フォルダ選択で \wsl$\Ubuntu\home\wida\dev\laravel を開く
Laravel Sail の正体は、Laravel開発用にチューニングされたDockerラッパースクリプト
処理内容 | 自動化されてる? | 実際の挙動 |
---|---|---|
Dockerイメージの取得 | ✅ | laravelsail/php82-composer とか mysql:8 をPull |
docker-compose.yml生成 | ✅ | sail:install 実行時に .docker と docker-compose.yml を作成 |
コンテナ起動 | ✅ | sail up -d で Laravel(PHP)と MySQL の2コンテナが起動 |
ネットワーク/ボリューム作成 | ✅ | LaravelとDBが同一ネットワークで通信できるように設定 |
先ほどのコンテナ起動でMySQLも一緒に起動されてます
xserverのような共用サーバーではvendor/bin/sail artisan~のようなsailコマンドが使用できない??
Laravel Breezeのインストール手順
とりあえずLaravel Breezeをインストールしましょう!Laravel Breezeは認証機能(ログイン、登録、パスワードリセットなど)を簡単に追加できるスターターキットです。
Breezeパッケージをインストール
./vendor/bin/sail composer require laravel/breeze --dev
./vendor/bin/sail artisan breeze:install
./vendor/bin/sail npm install
./vendor/bin/sail npm run dev
./vendor/bin/sail artisan migrate