# 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 のデフォルトバージョンを に設定したほうがいい

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
2022-04-05
  • docker