Laravelのdocker環境構築。laradockでざっくりと。

laradockを使ったlaravelの環境構築についてざっくり流れをまとめました。
docker自体初めてだったので備忘録としてメモっときます。

###前提
・dockerがインストールされていること
・gitができる環境であること

###➀作業ディレクトリ内にlaradockをクローン

```
$ mkdir project 
$ cd project

$ git clone https://github.com/Laradock/laradock.git
```
ここでは作業ディレクトリはproject。
laradockはgitのクローンによって取り込みます。<img width="588" alt="スクリーンショット 2020-02-01 14.12.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/48b4ec76-092c-5ceb-abf7-5e611a4c9415.png">

こんな感じでlaradockのディレクトリができると思います。
###➁設定ファイル.envを作成

laradockでは各コンテナの環境変数の設定は.envファイルに定義します。これらはdocker-compose.ymlファイルに適用します。
laradock内のenv-exampleをコピーして.env作成します。

```
$ cd laradock
$ cp env-example .env
```
###➂.envを編集する

####mysqlの設定
mysqlのバージョンはデフォルトでは**latest**となっており、そのままだと8.0系のバージョンとなるので5.7に変更しておきましょう。
なぜかというと8.0では認証などの改変があり、ログインできないなど問題が生じます。特にphpmyadminを使いたい場合は5.7にしておきましょう。
自分はここでつまずいて、めちゃくちゃ時間がとられました。

ユーザ名、パスワード等も変更します。


MYSQL_VERSION=latest →　MYSQL_VERSION=5.7
MYSQL_USER=default →　MYSQL_USER=root
MYSQL_PASSWORD=latest →　MYSQL_PASSWORD=root
<img width="401" alt="スクリーンショット 2020-02-01 15.02.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/93ac967b-b34a-57e5-dcac-2ebeacddfb14.png">




###➄コンテナの構築、起動
mysql、nginx、phpmyadminのコンテナを起動します。
workspaceなどのコンテナはnginxと依存関係にあるため、指定しなくても伴って立ち上がります。

```
$ docker-compose up -d nginx mysql phpmyadmin
```
docker-composeは複数のコンテナをまとめて管理する仕組みです。
**docker-compose up**のコマンドはdocker-compose.ymlに書いてある複数のコンテナの構築と起動を行うことができます。

###➅laravelのプロジェクトの作成
laravelのインストールにはcomposerやnodeなどのツールが用意されているworkspaceコンテナで行います。

まずはコンテナ内に入ります。

```
$ docker-compose exec  workspace bash
```
**exec**はコンテナのサービスを実行するためのコマンド。コンテナ内に入るには**bash**をつけます。

composerでlaravelのプロジェクトを作成します。

```
$ composer create-project --prefer-dist laravel/laravel myapp
```

<img width="588" alt="スクリーンショット 2020-02-01 23.00.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/28e39c72-7c20-4901-03a9-9c7544bdf795.png">
作業ディレクトリ内にlaravelのプロジェクトができたと思います。


laravel側のDB設定もしておきます。
laravel内の.envファイルとconfig/database.phpの項目を変更します。
ユーザ名：root
パスワード：root
ホスト名：mysql
DB名：default

###➆laravelの場所を指定
.envのAPP_CODE_PATH_HOSTの項目を見てみるとデフォルトでは
作業ディレクトリが指定されています。
<img width="426" alt="スクリーンショット 2020-02-01 23.16.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/3c4850c5-a494-7aea-cf25-1751d3b19de4.png">
これを**APP_CODE_PATH_HOST=../myapp/**に修正します。
<img width="411" alt="スクリーンショット 2020-02-01 23.22.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/78ff7467-26d9-2528-1d0d-19300aa7abc8.png">

###➇マイグレーション
再びworkspaceコンテナに入りマイグレーションを行います。

```
$ php artisan migrate
```
###➈ブラウザからアクセス
ブラウザから[http://localhost](http://localhost)にアクセスしてlaravelのホームページが表示されれば成功。

###➉phpmyadminにアクセス
[http://localhost:8080](http://localhost:8080)にアクセスします。
<img width="533" alt="スクリーンショット 2020-02-01 23.47.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502145/47ba6a3c-7f4c-078b-94ae-a8753271f276.png">
サーバ：mysql
ユーザ名：root
パスワード：root

これらを入力してログインできればOK。
テーブルが作成されているか確認しましょう。

###最後に
laradockでの環境構築はとても簡単で、とりあえずdockerでlaravelを立ち上げてみたい人には合ってると思います。でもプロジェクトが必要以上に大きくなること、またdockerに対する知識がなくてもできてしまうように感じられます。

もう少しdockerについて理解を深めるためにはlaradockを使わない方法もやってみるといいと思います。
そちらの方法の記事も書きましたので良ければどうぞ→https://qiita.com/rope19181/items/10da72374839630af83b