LaradockでMySQLがどうしても立ち上がらない人あつまれー！

`2017-07-23日記事の一部を変更しました。`

##はじめに
はじめまして、いつもQiitaでいろんな方の投稿を見させて頂いています。
今回環境構築でどっぷりハマったので備忘録＋誰かが見てくれたらいいなと思って書いてみます。

#結論
`~/.laradock/data/mysql`下のファイルが壊れている可能性があります！
Delete or Rename後
`docker-compose up -d nginx mysql`で幸せになれるかも？

>->[ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047](https://github.com/laradock/laradock/issues/1047) - 引用

>Removed image `$ docker rmi laradock_mysql`
>Remove container `$ docker rm laradock_mysql`
>Located `DATA_SAVE_PATH=~/.laradock/data` in .env file
>Deleted mysql folder
>Modified `laradock/mysql/Dockerfile`

>```comand:laradock/mysql/Dockerfile
FROM mysql:5.7
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
RUN chown -R mysql:root /var/lib/mysql/
ADD my.cnf /etc/mysql/conf.d/my.cnf
CMD ["mysqld"]
EXPOSE 3306
```

>Buil `docker-compeer up -d mysql nginx`
>I hope I didn't miss anything in the steps.

#たぶんこれが原因
Special Thanks @yamazakiさん
[ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047](https://github.com/laradock/laradock/issues/1047)
~~`docker-compose stop`をしてなくて再起動か削除を行ったせい。~~
->MySQL8.0からMySQL5.7に`Dockerfile`を変更したせい。

##私のスペック
PHP初心者/Docker初心者/Laravel初心者
完全に初心者なので間違っているや不適切なコトがありましたらコメントくれたらうれしいです。

##環境                                   
macOS Sierra 10.12.5
Docker for mac 17.06.0-ce-mac19
Laradock v5.5.1
Laravel v5.4

##前置き
インストールの詳細は他の方が丁寧に解説されているのでそちらを参照ください。
インストール後にMySQLがどうしても立ち上がらない人参考にしてください。

##問題発生
```
# 経緯をコマンドだけ記載
git clone --depth=1 -b v5.5.1 https://github.com/LaraDock/laradock.git
cd laradock
cp env-example .env
vi .env
NGINX_HOST_HTTP_PORT=8080 #変更

# MySQLの設定
MYSQL_DATABASE=laradock #変更
MYSQL_USER=laradock #変更
MYSQL_PASSWORD=secret #変更
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
```

```command:laradock/nginx/sites/default.conf
server_name localhost; #変更
root /var/www/laravel/public; #変更
```

```command:/laradock
# Laravelインストール後
docker-compose up -d nginx mysql

docker-compose ps

         Name                        Command              State                      Ports
-------------------------------------------------------------------------------------------------------------
laradock_applications_1   /true                           Exit 0
laradock_mysql_1          docker-entrypoint.sh mysqld     Exit 2
laradock_nginx_1          nginx                           Up       0.0.0.0:443->443/tcp, 0.0.0.0:8088->80/tcp
laradock_php-fpm_1        docker-php-entrypoint php-fpm   Up       9000/tcp
laradock_workspace_1      /sbin/my_init                   Up       0.0.0.0:2222->22/tcp
```

MySQLが立ち上がらない。。。
ちなみにこの状態でもlocalhost:8080でLaravel画面やresources/views関連のページは表示できます。
ただMySQLが立ち上がっていないため
`php artisan migrate`などのコマンドが通らず、Model?Controller?関連の開発が出来ません。

##ここは奮闘記なので基本読まなくてOK
`Docker run`->起動せず
Laradock再インストール->改善せず
Docker for mac再インストール->改善せず
この時点でDockerのことが半分嫌いになってます(´；ω；｀)

あと半分は開発環境をコンテナで管理したいという思いだけ。
先人の知恵で公式Document見なさいと言ってたのを思い出す。
・Laradock.ioのDocumentを見ながら(´・ω・｀)
・https://github.com/laradock/laradock/ のコード見ながら(´・ω・`)
・Dockerの公式Document見ながら(´；ω；｀)

もう何もかも忘れたくなりmac再インストールしたいと思った時、
DockerはDockerコンテナの起動と廃棄を前提にしていることを思い出す。
mac上のMySQLも権限関係で起動しないことがあったことを思い出す。

DockerのMySQLファイルはどこあるんだ？

```laradock:laradock/docker-compose.yml
### MySQL Container #########################################

    mysql:
      build:
        context: ./mysql
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql # <-これっぽいが${DATA_SAVE_PATH}ってなんだ？
        - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend
```

```laradock:laradock/.env
### Data Path:
# For all storage systems.

DATA_SAVE_PATH=~/.laradock/data # <-これだ！
```
user配下の.ファイルにMySQLファイルが永続化されていたようです。
ってことで私は諸悪の根源である~/.laradockをポイして、
`docker-compose up -d nginx mysql`で改善！！！(｀・ω・´)

MySQL内にデータがある人はバックアップしてくださいね。

最後まで読んでいただきありがとうございました！

備忘録

```laradock:laradock/.env
### Data Path:
# For all storage systems.

# DATA_SAVE_PATH=~/.laradock/data
DATA_SAVE_PATH=.laradock/data # <-これでlaradock内で管理できます。プロジェクト毎に管理したい人用
```

##最後に一言！
`docker-compose stop`これ忘れない！
Log確認！！これ忘れない！<-2017-07-23追加

##参考
・[ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047](https://github.com/laradock/laradock/issues/1047)
・[DockerでLaravel(Apache+php-fpm+mysql)を構築する手順書 - Qiita](http://qiita.com/k-waragai/items/cc0ad847cf8391c796db)
・[Laradock on macでLaravelの開発環境をサクッと整備 - Qiita](http://qiita.com/yamazaki/items/d8b583a0fee70cadfc7b)
・[Laravel : laradockでlaravelの開発環境構築 | DN-Web64](http://www.dn-web64.com/archives/web/laradock_laravel/)
・[Laravel使った開発にLaradockを使うというのはどうだろう - Qiita](http://qiita.com/niisan-・tokyo/items/d4485b8bb4fbfcfcc6be)
・[Laradock 公式ページ](http://laradock.io/)
・[Laradock 公式github](https://github.com/laradock/laradock/)
etc...