はじめに
WindowsのHDDにPJファイルがある場合にlocalhostのロードが遅くなります。
だいたいこんな感覚
- 立ち上げの表示は5秒以上
- 通常のF5更新2~3秒
ちょっと遅いし、Ubuntu(Linux)に置くことで改行問題もそもそも起こらないと思うので、PJファイルはLinux内に置くことにしました。
読み込みの流れのイメージ(Windows内)
↓遅い
WindowsローカルPC HDD
↓
Docker
↓
WSL2
↓
Linuxコンテナ
↓
PHP読み込みの流れのイメージ(Ubuntu(Linux)内)
PJファイルをWSL2の中に置いて、以下のように変えます。
全てLinuxになることで早くなる。
Ubuntu(Linux) 仮想ディスク
↓
Docker
↓
WSL2
↓
Linuxコンテナ
↓
PHP設定方法
WSL確認
ローカルPCのエクスプローラーに以下を入力し、フォルダが表示される確認
\\wsl$\WSLに何が入ってる確認
PowerShellで以下を実行
wsl -l -v私の場合起動中の Docker のみが表示されました
NAME STATE VERSION
* docker-desktop Running 2ファイルを置くためにUbuntuをインストール
コマンドプロンプトはPowerShellでやっていきます。
wsl --install -d UbuntuWSL2はWindows上でLinuxを動かすための仕組みです。
WSL2だけでは通常の作業用Linux環境は存在しません。
ファイルを置いて開発するLinux環境を作るために、 UbuntuなどのLinuxディストリビューションをインストールします。
Ubuntuのインストール設定
コマンド実行後に、以下が表示されます。
ディストリビューションが正常にインストールされました。'wsl.exe -d Ubuntu' を使用して起動できます
Ubuntu を起動しています...
Provisioning the new WSL instance Ubuntu
This might take a while...
Create a default Unix user account:ユーザ名入力
「Create a default Unix user account:」
にユーザ名を入力してEnterを押します。
※Ubuntu内で使うLinuxユーザー名です。
自分が分かりやすい短い英小文字にすると扱いやすいです。
パスワード入力
「New password:」
↓
「Retype new password:」
Ubuntu内でsudoコマンドを使う時に入力するパスワードです。
ここも自分がわかりやすいものでOK
Ubuntuへの情報共有許可
Help us improve Ubuntu features and compatibility by sharing system reports with Canonical.
Reports are sent anonymously and do not contain any personal data.
For legal details, please visit: https://ubuntu.com/legal/systems-information-notice
We will save your answer to Windows and will only ask you once.
Would you like to opt-in to platform metrics collection (Y/n)? To see an example of the data collected, enter 'e'.
[Y/n/e]: y任意で好きなものにしてください。
無駄を省きたい場合は n が多いです。
完了
「ユーザー名@コンピュータ名」が表示される
PJをWindowsからUbuntu内に移動
Ubuntu内でコマンドでしていきます。
ルートに移動
cd ~パス確認
pwd私の場合こうなります
tm@pc240127:~$ pwd
/home/tmPJファイルをコピーして移動
cp -r /mnt/Windowに置いてあるPJファイルのパス ~ルートに配置するPJのフォルダ名co -r :再帰的にコピーする mnt:UbuntuからWindowsを参照してる状態
コピー確認
ls ~これでコピーしたフォルダが表示されるか確認。
※無事にできたら、Windows内の元ファイルは消した方が今後紛らわしくないかもしれません。
DockerコマンドをUbuntuで出来るようにする設定
Dockerデスクトップアプリを開く
右上の ⚙ を押して設定を開く
Resources > WSL Integration を開く
- 「Enable integration with my default WSL distro」にチェック
- UbuntuのスイッチをONにする
「Apply & restart」をクリック
UbuntuでDockerコマンドが動くか確認
Ubuntuのターミナル起動
VS CODEのターミナルに「Ubuntu(WSL)」があるのでそれを選択し、Ubuntuのターミナルを開く
プロジェクトフォルダに移動
Ubuntu内のプロジェクトフォルダ(ymlがある場所)
cd ~/プロジェクトのフォルダ名※ 私の場合です。各自おいてる場所に移動してください
Dockerコマンド動かす
docker compose up -d「permission denied while trying to connect to the docker API」
のようなエラーが出たら、権限問題なので以下のコマンドで作成したubuntuのユーザに権限を付与します。
sudo usermod -aG docker $USER
例)私の場合
sudo usermod -aG docker tm
このあとパスワード入力して、Ubuntuのターミナルを再起動して再度Dockerコマンド実行で成功するはずです。
補足:開発環境の起動について
普段は以下の流れで起動しています。
Ubuntuのターミナル起動
VS CODEのターミナルに「Ubuntu(WSL)」があるのでそれを選択し、Ubuntuのターミナルを開く
プロジェクトフォルダに移動
Ubuntu内のプロジェクトフォルダ(ymlがある場所)
cd ~/プロジェクトのフォルダ名Dev Containerで起動
※ 「WSL拡張機能 + code .」 で開くと、Ubuntu側にPHPを入れていない場合、PHP拡張機能の警告が出ます。
今回はPHPやComposerはDockerコンテナ内に統一したいので、Dev Containerで開く運用にしました。
さいごに
あとLinuxのフォルダは🐧アイコンでエクスプローラに表示されますが、VS CODEからワークスペース追加の時に、エクスプローラーに表示されてなかったりとわかりづらいときあります。
