Windows 10 HomeでDocker Composeを使う

Windows 10 HomeでDocker Composeを使う機会があったので、その記録です。

# マシンスペック
* DELL XPS 13
* Windows 10 Home
* Intel Core-i7
* メモリ 8GB
* SSD 256GB

# やること
Windows 10 HomeでDocker Composeを使えるようにする

# 前提条件
*　[Windows Update](https://www.google.com/search?q=Windows+Update&oq=Windows+Update&aqs=chrome..69i57j0l7.1394j0j9&sourceid=chrome&ie=UTF-8)して、OSを最新にしておく
*　VirtualBoxがインストールされてると動かないかも？なので、アンインストールして再起動しておく

# Linux用サブシステムとHyper-Vをインストール

Windows 10 HomeでDockerを動かすにはWSL2が必要で、WSL2を使うには、まずはWindowsの機能を有効化する必要があります。
「[Windowsの機能の有効化または無効化](https://www.google.com/search?q=Windows%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%BE%E3%81%9F%E3%81%AF%E7%84%A1%E5%8A%B9%E5%8C%96&oq=Windows%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%BE%E3%81%9F%E3%81%AF%E7%84%A1%E5%8A%B9%E5%8C%96&aqs=chrome..69i57j69i59j0l5j69i61.954j0j9&sourceid=chrome&ie=UTF-8)」で下記の反転箇所をチェックしてインストールします。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/a51526a9-0235-c4e8-3e37-58753c19c683.png)


# 仮想マシンの機能を有効にする

[PowerShellを管理者権限で起動](https://www.google.com/search?q=PowerShell%E3%82%92%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%A7%E8%B5%B7%E5%8B%95&oq=PowerShell%E3%82%92%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%A7%E8%B5%B7%E5%8B%95&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8)し、下記コマンドを実行します。

```powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

# WSL2に更新する

下記をダウンロードしてインストールします。
[https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)

# WSL2を既定のバージョンとして設定

[PowerShellを管理者権限で起動](https://www.google.com/search?q=PowerShell%E3%82%92%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%A7%E8%B5%B7%E5%8B%95&oq=PowerShell%E3%82%92%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%A7%E8%B5%B7%E5%8B%95&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8)し、下記コマンドを実行します。

```powershell
wsl --set-default-version 2
```

下記のメッセージが出力されるがスルーして良い。

```
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
```

[タスクマネージャーを開いて](https://www.google.com/search?q=%E3%82%BF%E3%82%B9%E3%82%AF%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%92%E9%96%8B%E3%81%84%E3%81%A6&oq=%E3%82%BF%E3%82%B9%E3%82%AF%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%92%E9%96%8B%E3%81%84%E3%81%A6&aqs=chrome..69i57.1361j0j9&sourceid=chrome&ie=UTF-8)、赤線のところが有効になってれば良い。
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/3fd5f4b9-ec3e-5a39-f969-915724c3b83b.png)


※参考
[Windows 10 用 Windows Subsystem for Linux のインストール ガイド](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)

# Docker Desktopをインストール

下記のページに従ってDocker Desktopをインストールします。
[Windows 10 Home で WSL 2 + Docker を使う](https://qiita.com/KoKeCross/items/a6365af2594a102a817b#install-docker-desktop)
<font color="red">※「Get started」以降はチュートリアルなので、スキップして良いです。</font>

[コマンドプロンプトを開き](https://www.google.com/search?q=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&oq=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&aqs=chrome..69i57.1075j0j9&sourceid=chrome&ie=UTF-8)、下記コマンドを実行してバージョンが出力されたら完了。

```console
docker --version
docker-compose --version
```

# Gitをインストール

Gitが未インストールだったら、インストールします。
[WindowsにGitをインストールする方法](https://proengineer.internous.co.jp/content/columnfeature/6893)

[コマンドプロンプトを開き](https://www.google.com/search?q=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&oq=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&aqs=chrome..69i57.1075j0j9&sourceid=chrome&ie=UTF-8)、下記コマンドを実行します。

```console
git --version
```

バージョンが表示されればOK。

```
'git' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```

上記が表示されたら再起動して、再度バージョン確認を行います。

# Docker Composeコマンドを使ってみる

[コマンドプロンプトを開き](https://www.google.com/search?q=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&oq=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%82%92%E9%96%8B%E3%81%8D&aqs=chrome..69i57.1075j0j9&sourceid=chrome&ie=UTF-8)、下記コマンドを実行します。

各環境の操作は、下記のように記載します。

```
[Win]$ WindowsのコマンドプロンプトでWindows内の作業
[PHP]$ WindowsのコマンドプロンプトからPHPコンテナに接続して作業
```

```console
[Win]$ git clone https://github.com/bobtabo/docker2.git docker
[Win]$ cd docker
[Win]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php   ... done
Creating nginx ... done

[Win]$ docker-compose exec --user 1000 php bash

[PHP]$ pwd
/home/docker

[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ sudo chmod -R 777 storage

[sudo] password for docker:
パスワード：docker

[PHP]$ sudo chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ php artisan view:clear
[PHP]$ php artisan cache:clear
[PHP]$ php artisan config:clear
[PHP]$ php artisan route:clear
[PHP]$ php artisan clear-compiled
[PHP]$ php artisan config:cache
[PHP]$ composer dump-autoload
[PHP]$ php artisan ide-helper:generate
[PHP]$ php artisan ide-helper:models -N
[PHP]$ php artisan ide-helper:meta
[PHP]$ php artisan migrate:fresh --seed
```

### 動作確認（Windowsのhosts編集）

[【Tips】Windows 10のhostsファイルを編集する方法](https://softantenna.com/wp/tips/windows-edit-hosts/)

```
★下記の点線内を追記
---
127.0.0.1 laravel.local
---
```

### ブラウザで動作確認
http://laravel.local/

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/a81518d3-e2d8-067b-1142-fde84c1e8fce.png)


### コンテナ削除

```console
[Win]$ docker-compose down --rmi all --volumes
```

※参考
[《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド](https://qiita.com/suin/items/19d65e191b96a0079417)