LaradockでLaravel環境構築自分用メモ

# 前提
- macOS High Sierra 10.13.6
- docker for mac インストール済み

# 手順
### 1. ディレクトリを作成し移動

```
$ mkdir myproject
$ cd myproject
``` 
### 2. GitHubからLaradockをクローンし移動

```bash:myproject

$ git clone https://github.com/Laradock/laradock.git
$ cd laradock
```
### 3. サンプルの環境設定ファイルをコピー

```bash:laradock
$ cp env-example .env
```
### 4. 上でコピーした.envファイルをvi等任意のエディタで開く

```bash:laradock
$ vi .env
```

### 5. .envファイルの以下の箇所を編集する

```bash:laradock/.env
### Paths #################################################

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../projectName/ # 任意のプロジェクト名追加

省略

### MYSQL #################################################

MYSQL_VERSION=5.7 # latestから5.7に変更
MYSQL_DATABASE=default # DB名を変えたい場合はここを変更
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
```

### 6. docker-composeコマンドで任意のコンテナを起動

```bash:laradock
$ docker-compose up -d nginx mysql phpmyadmin redis

# 初めはimageをダウンロードしてくるため、かなり時間がかかる
# 2回目以降は一瞬で起動完了する
# 最終的に以下のような表示が出たらコンテナの起動完了

Creating laradock_mysql_1            ... done
Creating laradock_redis_1            ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_phpmyadmin_1       ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

# 念のため以下のコマンドで起動確認
$ docker-compose ps
           Name                          Command               State                    Ports                  
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp                                
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp       
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                
laradock_phpmyadmin_1         /run.sh supervisord -n -j  ...   Up      0.0.0.0:8080->80/tcp, 9000/tcp          
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp                  
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp       

# State が Up で起動中

```

### 6. 以下のコマンドでworkspaceコンテナに入り、Laravelをインストール

```bash:laradock
$ docker-compose exec --user=laradock workspace bash
laradock@hogehoge:/var/www$ 
# rootで入るとcomposerの実行時に怒られるため、--userオプションでlaradockユーザーで入る

# 以下のコマンドでlaravelプロジェクト作成 projectNameは手順5.で指定した名前を使用する。
laradock@hogehoge:/var/www$ composer create-project laravel/laravel projectName

# インストールが完了するまで待つ、10〜15分程度？
```

### 7. コンテナ内のLaravelの環境設定ファイルを編集

```bash:laradock
# 初めにデフォルトで用意されている設定ファイルをコピー
laradock@hogehoge:/var/www$ cp .env.example .env

# コピーした設定ファイルをvi等任意のエディタで開く
laradock@hogehoge:/var/www$ vi .env

```
```bash:.env
# 省略

# 以下の箇所を修正する。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # mysqlに変更 laradockが名前解決してくれる
DB_PORT=3306
DB_DATABASE=homestead # defaultに変更
DB_USERNAME=homestead # defaultに変更
DB_PASSWORD=secret

# 省略

REDIS_HOST=127.0.0.1 # redisに変更 laradockが名前解決してくれる
REDIS_PASSWORD=null
REDIS_PORT=6379
```

### 8. コンテナの再起動

```bash:laradock
# コンテナから抜ける
laradock@hogehoge:/var/www$ exit

# コンテナの停止と起動
$ docker-compose stop
$ docker-compose up -d nginx mysql phpmyadmin redis
```

### 9. 完了
[localhost](http://localhost)にアクセスしてLaravelの画面が表示されたらOK。![スクリーンショット 2019-04-02 17.07.30.png](https://qiita-image-store.s3.amazonaws.com/0/298021/5d129072-feda-1315-e868-21353cf39283.png)


phpMyAdminは[localhost:8080](http://localhost:8080)⇦こちら。
<img width="945" alt="スクリーンショット 2019-04-02 17.08.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/298021/96bb19a3-825e-18b6-8614-9bee47de7cdf.png">

# 備忘
Laradockは環境変数ファイルにバージョン情報やコンテナに必要な情報をまとめているため、
基本的にdocker-compose.ymlをいじる必要がない。