【2019年2月】Laradockの初期環境設定方法

Laradockのセットアップに関する手順書が欲しかったのですが、ググって出てくるサイトがどれもバラバラの手順を示していて、結局何をしたらいいのかを判断するまでにかなり時間がかかってしまいました。。

なので、自分用の備忘録を兼ねて、laradockの初期設定方法をまとめておきます。

身も蓋もないことですが、こういうTipsは[公式サイト](https://laradock.io/documentation/)を読むのが一番です。。
が、この投稿がその橋渡しとなれば幸いです！

## 前提
- Mac OS を利用していること
- Docker for Mac がインストールされていること
- git を利用できること

## laradockをcloneする

`mkdir [ディレクトリ名] && cd [ディレクトリ名]`で、ディレクトリを作成し、移動します。

```shell:
~/laravel
❯ mkdir sample_app && cd sample_app
```

`git clone`してきます。

```shell:
~/sample_app
❯ git clone https://github.com/LaraDock/laradock.git
```

すると、`laradock`ディレクトリが作成されます。
存在を確認した後、`laradock`ディレクトリに移動します。

```shell:
~/sample_app
❯ ls
laradock

~/sample_app
❯ cd laradock
```

## `.env`ファイルの作成・編集

`cp`コマンドを用いて、`.env`ファイルを作成します。

```shell
~/sample_app/laradock master
❯ cp env-example .env
```

次に、MySQLのバージョンを指定します。

というのも、2018年2月1日現在、mysqlのバージョンが8.0以上になっているとセキュリティの関係でDockerがうまく動作しません。

こちらに詳細をまとめてあります↓
[Laradock で mysql がうまく動作しない時は ( mysqlコンテナが起動しない、migration 出来ない）](https://qiita.com/don-bu-rakko/items/cd8f96cc9087abf601e3)

ということで、先ほど作成したlaradockディレクトリ内の`.env`ファイルを編集します。

```shell:laradock/.env
# MYSQL_VERSION=latest 変更前
MYSQL_VERSION=5.7 #変更後
```

ついでにMYSQLに関する情報も確認しておきましょう。
公式ドキュメントを読むと、
>The default username and password for the root MySQL user are root and root.

とのこと。`MYSQL_ROOT_PASSWORD`が`root`になっているのがわかりますね。

```
~/sample_app/laradock master
❯ cat .env |grep MYSQL_
WORKSPACE_INSTALL_MYSQL_CLIENT=false
MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
```

## コンテナを作成する

その上で、`docker-compose up -d`コマンドを入力し、コンテナを立ち上げます。
ちなみに、`-d`オプションはdetatchedの略で、バックグラウンドでコンテナを実行してくれるものです。

```
~/sample_app/laradock master
❯ docker-compose up -d nginx mysql phpmyadmin
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_mysql_1            ... done
Recreating laradock_phpmyadmin_1       ... done
Recreating laradock_workspace_1        ... done
Recreating laradock_php-fpm_1          ... done
Recreating laradock_nginx_1            ... done
```

`docker ps`コマンド、もしくは`docker container ls`コマンドでコンテナが立ち上がっているかを確認しておきましょう。

```
~/sample_app/laradock master
❯ docker container ls
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                      NAMES
592e749b5196        laradock_nginx        "/bin/bash /opt/star…"   5 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
055056a185a1        laradock_php-fpm      "docker-php-entrypoi…"   5 minutes ago       Up 5 minutes        9000/tcp                                   laradock_php-fpm_1
8695c852dc7d        laradock_workspace    "/sbin/my_init"          5 minutes ago       Up 5 minutes        0.0.0.0:2222->22/tcp                       laradock_workspace_1
ce452294c851        laradock_phpmyadmin   "/run.sh supervisord…"   5 minutes ago       Up 5 minutes        9000/tcp, 0.0.0.0:8080->80/tcp             laradock_phpmyadmin_1
31cac2dbfc90        laradock_mysql        "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
4ff26c75d351        docker:dind           "dockerd-entrypoint.…"   5 minutes ago       Up 5 minutes        2375/tcp                                   laradock_docker-in-docker_1
```

無事に起動していますね。

## Workspace上にLaravelを立ち上げる

まずはworkspaceに入ります。`root`ユーザーでログインしてしまうと後ほどcomposerに怒られるので、`laradock`ユーザーでログインします。

```
~/sample_app/laradock master
❯ docker-compose exec --user=laradock workspace /bin/bash
```

ログイン後のユーザー名が`laradock@...`となっていればOKです。

```
laradock@8695c852dc7d:/var/www$
```

ではいよいよcomposerコマンドを用いてLaravelをインストールしましょう。
`my-first-app`の部分は自分の好きな名前を入力してください。

```
laradock@8695c852dc7d:/var/www$ composer create-project laravel/laravel my-first-app
```

インストールが完了するのにまあまあ時間がかかるため、気長に待ちます。
ディレクトリが作成されているかを一応確認しておきましょう。

```
laradock@8695c852dc7d:/var/www$ ls
laradock  my-first-app
```

##`.env`ファイルを編集する

インストールが完了したらmy-first-appディレクトリ内にある`.env`ファイルを編集します。
注意：先ほど編集したのは**laradockフォルダ**内の`.env`ファイルです！間違えないように！

```text:/var/www/my-first-app/.env
DB_HOST=mysql # 127.0.0.1 から変更
DB_DATABASE=default # homestead から変更
DB_USERNAME=default # homestead から変更
```

そしたら今度は、**laradockディレクトリ内の**`.env`ファイルを編集します。ややこしいですね。。
`APP_CODE_PATH_HOST=../`となっているものを、自分が先ほど作成したLaravelプロジェクト名に変更します。

まずは`exit`コマンドを叩いて、仮想環境から抜け出ましょう。

```
laradock@8695c852dc7d:/var/www/my-first-app$ exit
```

そして、`.env`ファイルを編集します。

```text:~/sample_app/laradock/.env
APP_CODE_PATH_HOST=../my-first-app/
```
ここまで設定が終わったらdockerを再起動します。

```
~/sample_app/laradock master
❯ docker-compose stop
Stopping laradock_nginx_1            ... done
Stopping laradock_php-fpm_1          ... done
Stopping laradock_workspace_1        ... done
Stopping laradock_phpmyadmin_1       ... done
Stopping laradock_mysql_1            ... done
Stopping laradock_docker-in-docker_1 ... done

~/sample_app/laradock master
❯ docker-compose up -d nginx mysql phpmyadmin
Recreating laradock_mysql_1            ... done
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_workspace_1        ... done
Recreating laradock_phpmyadmin_1       ... done
Recreating laradock_php-fpm_1          ... done
Recreating laradock_nginx_1            ... done
```
http://localhost/ にアクセスしてLaravelのTop画面が出てきたら成功です！！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/241647/431edd48-8b96-c3a9-3394-281e1c18e195.png)

念の為、`migrate`コマンドが通っているかを確認しましょう。

```
~/sample_app/laradock master 2m 23s
❯ docker-compose exec workspace /bin/bash
root@30a950d2b38e:/var/www# php artisan migrate
Nothing to migrate.
```


## おまけ： phpmyadminを使う

http://localhost:8080/　にアクセスして下記のように打ち込めばOK!

![image.png](https://qiita-image-store.s3.amazonaws.com/0/241647/6cb32eaf-0eb7-d0a5-62c8-b696257df0cf.png)


以上！