既存プロジェクト（Vagrant+Homestead）のLaradock環境設定方法とMySQLの設定

# 目的
Vagrant＋Homestead環境を利用して作成されたlaravelプロジェクトを
Laradock環境へ変更する。
その際、プロジェクト固有の環境を構築する。
# 前提条件
+ virtualbox+ubuntu環境が構築されている事
+ githubに既存プロジェクトがpushされている事
+ dockerがインストールされている事
+ 今回はmacを利用しますが、windowsでもほぼ同じ手順で構築できると思います
+ 既存プロジェクト名を「myApp」、リポジトリを「myRepository」とします

# 実施
## myAppをcloneする 
```
$ git clone https://github.com/myRepository/myApp
```

## myApp内に、laradockをサブモジュールとして追加する

```
$ cd myApp
$ git submodule add https://github.com/Laradock/laradock.git 
```

ディレクトリ構成としては

```
-myApp
  -app
  -nginx
  -その他色々
  -laradock
```
となります
## laradockディレクトリに移動し<br/>env.exampleをコピーし.envファイルを作り編集する

```
$ ch laradock
$ cp env.example .env
```

```php:.env
// ... 略

# Apatchのポートと被っているので変更する
- NGINX_HOST_HTTP_PORT=80
+ NGINX_HOST_HTTP_PORT=8888    

// ... 略

# homesteadの設定をそのまま使いたいので変更する
- MYSQL_DATABASE=default 
- MYSQL_USER=default
- MYSQL_PASSWORD=root

+ MYSQL_DATABASE=homestead 
+ MYSQL_USER=homestead 
+ MYSQL_PASSWORD=secret

// ... 略
```

homesteadの設定から変えてもいいのですが、できるだけ楽に使いたいので。
## MySQLのセキュリティ設定をmy.cnfに追記する

```
$ cd mysql
```
```sql:my.cnf
# 下記の行を追記
[mysqld]
+ default_authentication_plugin=mysql_native_password 
```

## dockerコンテナの立ち上げと接続確認
```
$ cd ../  # laradockへ移動
$ docker-compose up -d nginx mysql
```
ここでブラウザで画面を立ち上げると
404 not found nginx
と表示されます。
これによって「nginx」が正常に起動している事が確認できます。

```
$ docker-compose ps
```

起動プロセスを確認すると、nginx、mysql以外に
php-fpm、workspace型ちあがっています。（この２つは自動で立ち上がります）

__補足１：ブラウザ表示アドレス例__
・ Mac：192.168.56.101:8888/
・ ubuntu：localhost:8888/
__補足２：ブラウザ表示読み出し箇所__

```
$ cd /laravel/nginx/sites/default.conf
```
```php:default.conf
# ブラウザ表示箇所
root /var/www/public;
```
## workspaceの構成確認
```
$ docker-compose exec workspace bash
```
ディレクトリ構成は以下の通り

```:/var/www
# ls
# app public その他色々 laradock 
```
## myAppの設定
```
# exit    // コンテナを抜ける
$ cd ../  # myAppフォルダへ移動
```
```
# プロジェクトによってまちまちですが、
# 今回は.env.localに以前の設定が残されているのでそれをコピーして利用します
$ cp .env.local .env
$ composer install
$ php artisan key:generate
$ chmod -R 777 storage/      # 権限変更しておかないと、起動時にlogファイルアクセスエラーとなります
```
## MySQLの設定
```
$ cd laradock                      # laradockフォルダへ移動
$ docker-compose exec mysql bash   # mysql立ち上げ
# mysql -u root -p                 // rootで接続
```
```sql
/* DB作成、User作成、DBへの権限設定 */
> CREATE DATABASE homestead;
> CREATE USER homestead@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
> GRANT ALL PRIVILEGES ON homestead.* TO homestead@'%' WITH GRANT OPTION;

/* DBとUserが既に存在ている場合はこちら：権限設定 */
> ALTER USER homesteat@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
```
```
> quit;
# exit
```

## docker再起動
不要かもしれませんが念のため

```
$ docker-compose stop
$ docker-compose up -d nginx mysql
```

## マイグレーション
```
$ docker-compose exec workspace bash
```
```
# php artisan migrate:install
# php artisan migrate
# locale-gen ja_JP.UTF-8
# exit
```

## 表示確認
ブラウザで画面を起動すると、プロジェクトが起動されるはずです。

## tips
+ myAppの設定は、マイグレーションの直前に行った方がスムーズかもしれません
+ ubuntuを利用しているため、コマンドにはsudoが必要となります
+ sudo -sでスーパーユーザになっておくと楽かもしれません

## 参考
+ [Laradockでの環境構築方法２パターンを細かめに説明](https://qiita.com/wajima/items/69fad6c2b42c52928e82)
+ [PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する](https://liginc.co.jp/364089)
+ [MySQL8.0 認証方式を変更する](https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917)