【Docker for Windows】Laradock環境をささっと構築する


#LaradockでLaravel開発環境を整える
今回チームのアプリ制作でLaradockを使って開発をすることになったので

その時にハマったことなどを備忘録的にまとめていきたいと思います



##前提環境
- Windows 10 Pro(Hyper-V)
- [Docker for Windows](https://docs.docker.com/docker-for-windows/install/)
- Postgres(DB)
- Nginx(Web Server)
- [Git](https://git-scm.com/downloads)

**※Docker for windowsはWindows 10 Proじゃないと使えないので注意が必要です**


##Laradockをgit clone
好きなディレクトリへ移動して**Laradockをgit cloneします**

<pre>
cd yourProject

//移動したらgit cloneをする
git clone https://github.com/laradock/laradock.git
</pre>

<br>
現段階でのディレクトリ構造は以下の通りです
<pre>
yourProject
  ┗━ Laradock
</pre>

できていることが確認出来たら.envファイルを作成します

作成というよりファイル名を変えてコピーするだけなのでコマンドを入力するだけです

<pre>
cp env-example .env
</pre>

コマンドを入力したら.envファイルが作成されます
確認したい場合はエクスプローラーから開いて確認することができます

##Laradock .envの設定

変更するコード
<pre>
APP_CODE_PATH_HOST=../APP_NAME/    //8行目あたり

COMPOSE_PROJECT_NAME=APP_NAME　　　//36行目あたり

※APP_NAMEはおのおの名前を付けてください
</pre>

特に二行目のcompose_project_nemeを変更は忘れないようにしましょう

ここを設定しておくとコンテナ被りを避けることができます
<br>
あと290行目付近にPostgresの設定が書かれているところがあるので

**DB名とユーザー名、パスワード**をメモか何かしておきましょう

あとでLaravel側の.envの書き換えで使います


##Dockerの環境構築

まず**Dockerアプリを起動**します
起動するまでしばし待ちましょう

<br>
<pre>
cd laradock
</pre>
<br>

起動が完了したらLaradockフォルダに移動してdockerのコンテナを立ち上げます

<details><summary>コンテナとは？</summary><div>
>コンテナ型仮想化はOSの上に“コンテナ”と呼ばれる仮想的なユーザー空間を提供します。ユーザー空間とは、ユーザーがアプリケーションを実行するための、
ひと揃いのリソースが提供される空間です。通常は1つのOSの上に1つのユーザー空間があるのですが、コンテナ型仮想化では1つのOSの>上で仮想的なユーザー空間であるコンテナを複数提供できます。

>via [注目を浴びる「Dockerコンテナ」、従来の仮想化と何が違うのか？](https://cn.teldevice.co.jp/column/10509/)
</div></detail>
<br>
以下をPoweShellに入力
<pre>
docker-compose up -d nginx postgres
</pre>
途中赤字の文字とか出てきますが気にせず完了するまで待ちます
ただ、はじめて構築するときはそこそこ時間がかかるので気長に待ちます

<br>

完了した後にLaradockのワークスペースに入り込みます

PowerShellで以下の入力します

<pre>
docker exec -it APP_NAME_workplace bash
</pre>


<pre>
root@------:/var/www
</pre>

と出たらワークスペースに入ることができています

<br>
**エラーが出た場合に確認すること**

- Dockerが起動しているか
- カレントディレクトリ（今いるディレクトリ）がLaradockかどうか



ワークスペースに入り込んだらlaradockにあるパッケージを最新のバージョンに更新していきます

これもコマンドを入力するだけOKです

<pre>
apt-get update
</pre>

入力したら完了までしばらく待ちます
<br>

完了したらLaravelをインストールしていきます
<br>

##新規プロジェクトを作成する方法

ワークスペースに入っている状態で
<pre>
composer create-project laravel/laravel APP_NAME
</pre>


そして、次にDockerの時と同じように.envファイルをコピーして作成していきます

<pre>
cp .env.example .env
</pre>

.envファイルは環境を設定するためのファイルなのでないとエラーが出てしまいます
なのでDockerの時もそうですが忘れずに作成するようにしましょう


<br>
作成し終わったら、次はcomposerをアップデートします
今の状態だとvenderファイルが存在しません
venderファイルというのはcomposerの依存設定を置くところと認識したらOKだと思います

<pre>
composer update //ワークスペース内で
</pre>

ちなみに現在のディレクトリはこんな感じです
<pre>
yourProject
  ┗━　APP_NAME
  ┗━　Laradock
</pre>

読むといいかも：[Laravelのディレクトリ構造について学ぶ](https://qiita.com/shosho/items/93cbff79376c41c3a30b#vendor)
<br>
##Laravel .envの設定

今回はPostgresを使うのでその箇所だけを書き換えます

たとえばこんな感じ

<pre>
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432

//ここから↓はLaradockの.envにかかれてた内容を書く
DB_DATABASE=DB_NAME
DB_USERNAME=USER_NAME
DB_PASSWORD=PASSWORD
</pre>

上から3行はコピペしちゃっても大丈夫かと思います

下から3行はLaradockに書いてあったとおりに書いていきましょう

<br>

最後にdocker-composeでコンテナをリビルドします

<pre>
docker-compose up -d --build nginx postgres
</pre>

リビルドが完了したら
http://localhost
でLaravelのウェルカムページが表示されるはず

ここで表示されないエラーが出る場合はlaradockの側の.envファイルでミスがあります。
詳しくは後日別記事で書きますのでお待ちください。

以上がDocker for windowsを使ったLaradock環境構築でした、ありがとうございました。
<br>
***
僕がおせわになった記事たち
[LaradockでLaravel環境構築【手順書】](https://qiita.com/harukei/items/b103861b75b69d706805)
[Windows10でLaradockを使ってLaravel 5.5環境を作る](https://qiita.com/sket88/items/4de708ce394179c61d8a)
[docker for windowsを使ってlaravelの開発環境を作る](http://matsuneko22.hateblo.jp/entry/2017/09/08/020621)