Macにlaradoc環境を作る

##前提
gitがインストールされている
dockerがインストールされている

##Laradockのインストール
```
~ $ mkdir App
~ $ cd App
~App $ git clone https://github.com/LaraDock/laradock.git
~App $ ls
laradock
~App $ cd laradock
```

.envファイルの作成と編集

```
~App/laradock $ cp env-example .env
```
.envファイルのMYSQL_VERSIONを変更

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

MYSQL_VERSION=5.7              <=　ここを変更
MYSQL_DATABASE=MyProject       <=　ここを変更
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

### REDIS #################################################
```

.envファイルに以下3行を追加

```
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
```

コンテナの起動

```
~App/laradock $ docker-compose up -d nginx mysql redis beanstalkd
~App/laradock $ docker-compose ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                      NAMES
4b9e9bfbf370        laradock_mysql        "docker-entrypoint.s…"   2 hours ago         Up 2 hours          0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
17c5c04e58be        laradock_beanstalkd   "/usr/bin/beanstalkd"    4 hours ago         Up 2 hours          0.0.0.0:11300->11300/tcp                   laradock_beanstalkd_1
3cd77fae82d4        laradock_nginx        "/bin/bash /opt/star…"   4 hours ago         Up 2 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
eb01a20e059a        laradock_php-fpm      "docker-php-entrypoi…"   4 hours ago         Up 2 hours          9000/tcp                                   laradock_php-fpm_1
e1a21a50ad8a        laradock_workspace    "/sbin/my_init"          4 hours ago         Up 2 hours          0.0.0.0:2222->22/tcp                       laradock_workspace_1
20ddc90f2473        laradock_redis        "docker-entrypoint.s…"   4 hours ago         Up 2 hours          0.0.0.0:6379->6379/tcp                     laradock_redis_1
0c81420f0e99        docker:dind           "dockerd-entrypoint.…"   4 hours ago         Up 2 hours          2375/tcp                                   laradock_docker-in-docker_1
```

コンテナが立ち上がっている状態となります

###mysqlのコンテナが立ち上がってこない場合

``~/.laradock/data/mysql``配下のファイルが壊れている可能性があり
このファイルとdockerコンテナ、dockerイメージを削除して再度設定

```
$ rm -rf ~/.laradock/data/mysql
$ docker rm laradock_mysql_1
$ docker rmi laradock_mysql
~App/laradock $ docker-compose build --no-cache
~App/laradock $ docker-compose up -d mysql
```

##Laravelプロジェクトの作成

コンテナへのアクセスと準備

```
$ docker exec -it laradock_workspace_1 bash
root@xxxxxxxxxxxx:/var/www# apt-get update
root@xxxxxxxxxxxx:/var/www# apt-get install vim
```

Laravelプロジェクトの作成

```
root@xxxxxxxxxxxx:/var/www# composer create-project laravel/laravel MyProject
root@xxxxxxxxxxxx:/var/www# ls
laradock MyProject
```

パーミッション設定

```
root@xxxxxxxxxxxx:/var/www# cd MyProject
root@xxxxxxxxxxxx:/var/www/MyProject# chmod 766 -R storage
root@xxxxxxxxxxxx:/var/www/MyProject# chmod 766 bootstrap/cache
```

Nginxのrootを変更

```
root@xxxxxxxxxxxx:/var/www/laradock# vim nginx/sites/default.conf
server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    # For https
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name localhost;
    root /var/www/MyProject/public;                <=　ここを変更
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }
```

プロジェクトのDB設定を変更

```
root@xxxxxxxxxxxx:/var/www/MyProject# vim .env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=MyProject
DB_USERNAME=root
DB_PASSWORD=root
```
編集が完了したら保存しコンテナを再起動

```
~App/laradock $ docker-compose restart
```
localhost [http://localhost/] にアクセス

参考サイト
[Laradockを使ったLaravel開発環境構築](https://qiita.com/J_Shell/items/695a30fd38444d065ae5)
[LaradockでMySQLがどうしても立ち上がらない人あつまれー！](https://qiita.com/lara_bell/items/d4bd1340a5cc7dfcfcb4)
[LaradockのプロジェクトコンテナとMySQLコンテナを接続する方法](https://qiita.com/maejima_f/items/34cf3b8eb5ffbe256ad9)