Laradockで開発環境構築の手順（初心者）

# Laradockの導入手順
参照サイト一覧：
https://tadaken3.hatenablog.jp/entry/laradock-laravel
https://github.com/laradock/laradock/issues/251
## 1. 導入手順まとめ
<strong>1. 自分のプロジェクトを作成する</strong>
```mkdir yourProject```
現在のディレクトリ構成は以下のようになる。
development
┗ yourProject

<strong>2. プロジェクト内に移動する</strong>
```cd yourProject```
上記に続いて、Laradockをインストールする。
```git clone https://github.com/LaraDock/laradock.git```
現在のディレクトリ構成は以下のようになる。
development
┗ yourProject
　┗ laradock

<strong>3. Laradock内に移動する</strong>
```cd laradock```
上記に続いて、env-exampleというファイルを.envという名前でコピーする。
```cp env-example .env```

<strong>4. .envファイルの内容を修正する</strong>
自分の開発環境にあった設定を施してやる必要があるので、ファイルの内容の書き換えを行う。
* 個人的にこの辺りから躓き始めた。（ほんとこの辺が苦手...）
```(sudo) vi .env``` <- このコマンドで.envファイルの変更を行う。
（sudo = 他のユーザ権限でコマンドを実行するときに使う）
開発環境の構築をするのでルートディレクトリではなく以下のように変更を行う。
```- DATA_PATH_HOST=~/.laradock/data
+ DATA_PATH_HOST=.laradock/data```

<strong>5. MySQLの設定を変更</strong>
まずは、MySQLのバージョンを確認する。
```mysql --version```
確認が終わったら、.envファイルの以下の部分を変更します。

```
### MYSQL #################################################

MYSQL_VERSION=8.0.12（初期設定は、latest）
MYSQL_DATABASE=mydb（接続したいDB名を記載）
MYSQL_USER=root
MYSQL_PASSWORD=PASSWORD（MySQLに接続する際のパスワード）
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
```

<strong>5. Docker コンテナを起動する</strong>
ここのエラーでもっとも時間を割いてしまった。
```docker-compose up -d nginx mysql phpmyadmin```
上記のコマンドを叩いて問題がなければ次へ（6. 接続状態の確認）！！！
自分の場合は以下のようなエラーが出ていました。（原因は特定できておらず定かではないです）

```
laradock_docker-in-docker_1 is up-to-date
Starting laradock_mysql_1 ...
laradock_workspace_1 is up-to-date
laradock_php-fpm_1 is up-to-date
Starting laradock_nginx_1_df13abf0034c ... error

Starting laradock_mysql_1              ... done
c31e7511cefa04a840e9e): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1_df13abf0034c (ae021353106c09b15fddecaad8ed9d342abb355593fc31e7511cefa04a840e9e): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)
ERROR: Encountered errors while bringing up the project.
```
このようなエラーが出た場合の対応策（他ケースでも応用できます）としては、
```docker-compose ps```
上記のコマンドを叩いて、コンテナ内で立ち上がっているもののStatusを確認します。
```laradock_nginx_1_df13abf0034c        nginx                            Exit 128```
自分の場合は、この部分がエラーを引き起こしている箇所だったので、nginx Exit 128 でググりました。
この場合、80番ポートを覗いてやる必要があります。
```sudo lsof -i :80```
詳しくはまだ調べきれていませんが、httpd関係の接続が邪魔をしていたみたいです。
ここで思ったこと、「げっ！めっちゃ色々動いとる！こりゃ立ち上がらんわけだ。」なので、
```sudo killall httpd``` <- 一旦、全部ストップしちゃう。

```
sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
```
上記のコマンドの意味は正直まだわかっていませんが、これで自分は動くようになりました。
再度、
```docker-compose up -d mysql nginx```
動いたー！！！

<strong>6. 接続状態の確認</strong>
http://localhost
上記に接続してみると、
<img width="312" alt="20180629230557.png" src="https://qiita-image-store.s3.amazonaws.com/0/321807/4680b669-3fe7-c0d2-e33e-f37f9b3acc1f.png">
このような画面が表示されると思いますが、ここにLarvelがインストールされることになります。
http://localhost:8080
上記に接続してみると、phpMyAdminツールの画面が表示されます。さきほど、.envで設定したユーザー名でログインできるか確認しておきましょう。
<img width="500" alt="20180629230520.png" src="https://qiita-image-store.s3.amazonaws.com/0/321807/393d898c-9157-1b8b-3979-20913d579e41.png">

また、sshでコンテナに接続できるコマンドは以下の通りです。

```
docker-compose exec workspace bash
```

sshで接続後、プロジェクトの作成をします。

```
composer create-project laravel/laravel
```

終了！お疲れ様でーす！