# Docker WSL2 Laravel sail
- Docker 4.6.1
- WSL2
- Ubuntu 20.04 LTS
- PowerShell
# PowerShell WSL1 から WSL2 へ変換
wsl -l -v
# 出力
NAME STATE VERSION
Ubuntu-20.04 Running 2
* docker-desktop Running 2
docker-desktop-data Running 2
wsl --set-version Ubuntu-20.04 2
# 出力
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
# WSL1 から WSL2 へ変換できない
変換はかなり時間かかる。自分の場合は一時間半位かかっていたと思う。
WSL1 から WSL2 への変換が終わるまでに2時間以上かかりました。。。
wsl --set-version Ubuntu-20.04 2 コマンド実行で数分で変換完了する人と何時間でも変換されない人がいるようです。
# パーミッションエラーで WSL2 へ変換失敗エラー
# Ubuntu-20.04を一旦エクスポートする
wsl --export Ubuntu-20.04 Ubuntu-20.04.tar
# 登録済みのUbuntuを解除する
wsl --unregister Ubuntu-20.04
# Ubuntu-20.04をインポートする(インポート時バージョンを2に指定)
wsl --import Ubuntu-20.04 Ubuntu-20.04 Ubuntu-20.04.tar 2
WSL Tips
Ubuntu ができない、強制終了のエラーが出た際に wsl シャットダウンして、Ubuntu を再起動する
wsl --shutdown
WSL のデフォルトバージョンを 2 に設定したほうがいい
wsl --set-default-version 2
※ Ubuntu-20.04 Ubuntu-18.04 Ubuntu-22.04 も同じ手順で操作が同じ
# Docker container composer install 使う
WSL の設定が終わりましたら、残りは Ubuntu 内で Docker や Git 操作になります。
ソースコードを Pull して Composer install を実行
docker run --rm -it -v $PWD:/app composer install
--rm オプションは使い捨てコンテナ意味します。
-i オプション(--interactive)は、ホストの標準入力をコンテナの標準入力につなげてくれます。
-t オプションは(--tty)、コンテナの標準出力をコンテナの標準出力につなげてくれます。
-v オプション(--volume)は ホスト:コンテナ 形式でボリュームマウントを指定します。
PHP のバージョン指定
コマンド指定する
composer config platform.php 8.0.16
コマンドでやっても一緒ですが、composer.jsonファイルを直接変更しても問題ありません。
"config": {
"platform": {
"php": "8.0.16"
}
}
余談:Nodejs のバージョン指定は package.json に engines 指定
{
"name": "my-app",
"version": "1.0.0",
"license": "MIT",
"engines": {
"node": "12.x"
}
}
.bash_profile
.zshrc にエイリアス貼る
alias composer='docker run --rm -it -v $PWD:/app composer'
これでcomposer installが使えるようになります。
# Laravel sail
vendor/bin/sail のエイリアス貼る
vim ~/.profile
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
source ~/.profile
sail artisan key:generate
sail composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.3.3 2022-04-01 22:15:35