0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker Desktop + WSL2 + Laravel が遅いので高速化したい

Posted at

はじめに

元々は Vagrant + Homestead 環境にて開発を行っていましたが
Docker を使ってみたくなり環境を乗り換える事に

Docker Desktop を導入し環境を構築するところまでは良かったのだが
Homestead の時と比べて明らかに遅かった為、高速化するまでのお話

環境

  • Docker Desktop
  • WSL 2
  • Laravel
  • Vue3

想定読者

docker 導入したけど、なんか遅くない?と思っているピンポイントの人向け
docker 導入については、私自身参考にさせて頂いた記事を残しておきます

どんなシステム構成なのか

フロントが Vue3 でバックエンドに Laravel を使用している、何の変哲もない構成
フロント及びバックエンドは、同一サーバ上に配置

Vagrant から Docker への乗り換え

Windows10 Home でも Docker が使える事を知り、ノリで乗り換えを決意
詳しい手順等については以下を参考にさせて頂きました
ありがとうございます

高速化に向けて

ブラウザの開発者ツールにて確認したところ、画面表示完了まで 3 ~ 4 秒掛かっており明らかに遅くなっている
元々は 0.2 秒ほどだったため、10 倍以上遅くなっている

なぜ遅いのか?

色々調べているうちに似たような悩みを抱えている人がおり、解決している様に見える
そこでの原因として

Windows(ホスト) と Linux の OS ファイルシステム間でのファイルの読み込みが遅い

どういう事なのか

Windows と Linux では HDD のフォーマット形式が違い、その違う環境同士でファイルのやり取りを行うと時間が掛かる
という事からくりでした

なんでそんなことになるのか

Windows(ホスト)の C ドライブのファイルは
WSL 上の「/mnt/c/」等にマウントされます

なので、特に意識せずに

C:\work

この様な Path にて docker を起動すると

/mnt/c/work

のファイルを WSL が読みに行ってしまい、時間が掛かってしまいます

どう解決するのか

色々な記事に記載されいる解決策として

/mnt/以外に置く
¥¥wsl$Ubuntu¥home¥ に置く

という解決策があるのですが、知識が浅い私は

で、どうしたらいいの?
と結局解決に至らずもやもや

高速化しよう

ベストプラクティスなのかは分からないが早くはなりました

Ubuntu 導入

Microsoft Store から「Ubuntu 20.04 LTS」をインストール
※多分 Ubuntu じゃなくても良いと思います

コマンドでも導入する事が出来そうですが、今回は Store からインストールしました

\\wsl$

エクスプローラーで表示すると、Ubuntu が追加されているかと思います
※私の場合は、「Ubuntu-20.04」でした

プロジェクト配置場所の変更

今回は以下ディレクトリへ配置することにします

\wsl$\Ubuntu-20.04\home

先ほど追加された、Ubuntu を開きプロジェクトを配置

いざ docker 起動

Ubuntu のターミナルを起動し

docker compose build
docker compose up -d

ブラウザからアクセスし起動確認
・・・早くなってるはず!

docker コマンドがエラー ①

The command 'docker' could not be found in this WSL 1 distro. We recommend to convert this distro to WSL 2 and activate the WSL integration in Docker Desktop setting

WSL バージョンが 1 の為、バージョンアップしましょう

$ wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04                 Running         1

$ wsl --set-version Ubuntu-20.04 2

docker コマンドがエラー ②

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

Docker Desktop > 設定 > Resources > WSL INTEGRATION
にて「Ubuntu-20.04」のトグルを有効化する

早くなったのはいいけど、別の問題が

編集、ビルド出来ない?

私は VSCode にて作業をしているのですが、wsl 上にプロジェクトを配置したため
何やら、ファイルの編集やビルドが出来ない。。。

VSCode の Extention を導入にて解消しました

VSCode を起動する際は、ubuntu のターミナルにて開きたいディレクトリへ移動後

code .
にて起動
※VSCode 上からも起動可能な為、どちらでも良いです

VSCode の拡張が消えた?

消えたわけではなく、Local と WSL 上では別管理の様です

VSCode の Extentions タブを開くと

WSL UBUNTU - INSTALLED

が空っぽの為、Local と同じ Extention で良ければ、Install Local Extensions in 'Remote'... (雲のアイコン)にて、適用出来ました

ビルドについて

以前までは、VSCode の terminal にて「npm run watch」でビルドしていましたが、コマンドが通りません

ubuntu のターミナルにて「npm run watch」を実行しておき
VSCode 上での更新を検知して build が走る事を確認

ブラウザを更新し、変更内容が適用されている事を確認して完了

おわりに

もうちょっといいやり方あるんじゃないかと思っているが、現状方法が分からない為一旦これで進めようと思う
違うやり方や効率的な方法があれば教えてもらえると嬉しいです

お世話になった記事

ありがとうございます!

Docker 導入編

高速化編

ubuntu 開発環境

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?