Laradock & Laravel projectを始めてみよう！！の備忘録。

Laradock & Laravel projectを始めてみた際に、色々調べながらだったので備忘録。

## インストール手順を参考にしたサイト

- [http://Laradock.io/](http://Laradock.io/)
- [Laradockで簡単に開発環境を準備するメモ](https://nogson2.hatenablog.com/entry/2018/11/04/174328)
- [Laradockで簡単に開発環境を準備するメモ2](https://nogson2.hatenablog.com/entry/2018/11/12/152215)
- [Laradockを使ったLaravel開発環境構築のやさしい解説](https://techblog.scouter.co.jp/entry/2019/01/11/133508)
- [Laradockが上手く動かなくて困った話](https://qiita.com/skmt719/items/a296d81150fd7319e71a)

## 1.Laradockをクローン
Laradockを自分のプロジェクト内のディレクトリにcloneする。

**git clone**

```
git clone https://github.com/Laradock/Laradock.git　my-projecut
```

ディレクトリ構成は以下のような感じになる。

```
∟ my-project
```

**Laradock**
[http://Laradock.io/](http://Laradock.io/)

**Laradock github**
[https://github.com/Laradock/Laradock](https://github.com/Laradock/Laradock)



## 2.[.env]ファイルを作る
Laradockディレクトリ内に移動し、env-exampleをコピーしリネームする。

```
cd my-project

cp env-example .env
```

MYSQL_VERSIONがlastedなので最新versionのMySQLのdockerimageがpullされる。

そのためphpとの相互性の良い「5.7」に変更する。

念のため、コメントアウトして変更する。

```
# MYSQL_VERSION=latest
MYSQL_VERSION=5.7
```

## 3.コンテナ起動
docker-compose up してNginxとMySqlのコンテナを起動する。

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

初回はかなり時間がかかる。
docker-compose up 中にでたエラーは以下参照。
-[Laradockのdocker-compose upで出会ったエラー達](https://qiita.com/blueray777/items/44e25dc04ed1ab5c4cc8)



## 4.Laravelをインストール
立ち上がったら、Laradockにログインする

```
docker exec -it Laradock_workspace_1 /bin/bash
```

composerをインストール。

```
root@7651bdd4c89c:/var/www# composer create-project laravel/laravel src
```
**composer**
[https://getcomposer.org/](https://getcomposer.org/)

**Laravel**
[https://laravel.com/](https://laravel.com/)

## 5.コンテナ停止
Laradockの「.env」ファイルを編集するので一旦コンテナを停止する。

```
docker-compose stop
```

## 6.[.env]を編集

LaradockからLaravelにアクセスできるように「.env」を編集する。
Laradockの「.env」ファイルの`APP_CODE_PATH_HOST=../`にLaravelのディレクトリ名を記載する。

念の為`APP_CODE_PATH_HOST=../`をコメントアウトする。

```
# APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=../src
```

## 7.MySQLの環境設定を編集
Laradockの「.env」とLaravelの「.env」のMySQLに関する環境設定の内容を揃える。

### Laradock 「.env」

```
MYSQL_VERSION=latest
MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
```

### Laravel 「.env」
1. `DB_HOST=127.0.0.1`を`DB_HOST=mysql`に変更
2. `DB_DATABASE=homestead`をLaradockの`MYSQL_DATABASE=default`に合わせて`DB_DATABASE=default`に変更
3. `DB_USERNAME=homestead`をLaradockの`MYSQL_USER=default`に合わせて`DB_USERNAME=default`に変更
4. `MYSQL_PASSWORD=secret`と`DB_PASSWORD=secret`の値を同じにする

```
DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
DB_HOST=mysql
DB_PORT=3306
# DB_DATABASE=homestead
DB_DATABASE=default
# DB_USERNAME=homestead
DB_USERNAME=default
DB_PASSWORD=secret
```

## 7.コンテナ再起動
```
docker-compose up -d nginx mysql
```

## 8.MySQLにログインする
以下のコマンドでMySQLコンテナにログインする

```
docker exec -it Laradock_mysql_1 /bin/bash
```

MySQLコマンド`mysql -u default -p`でログインする。

```
root@aa476699c87a:/# mysql -u default -p
```

`Enter password:`と聞かれたら`DB_PASSWORD=secret`で記載した「secret」をいれる。

```
Enter password:
```

以下が表示されたらMySQLにログイン成功

```
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```


## Docker-Composeで立てたMySQL用コンテナの日本語設定

日本語が文字化けしてしまったので、以下のサイトを参考にした。

[Docker-Composeで立てたMySQL用コンテナの日本語設定の仕方](https://qiita.com/maejima_f/items/4d5432aa471a9deaea7f)

## MySQLコンテナ内でvimを使用したい場合
MySQLコンテナ内でvimを使用したかったので以下のサイトを参考にした。

[Docker — docker コンテナの中で vim が使えない場合](https://qiita.com/YumaInaura/items/3432cc3f8a8553e05a6e)

## docker command
コンテナ起動
- docker-compose up -d Nginx mysql

MySQLにログイン
- docker exec -it Laradock_mysql_1 /bin/bash

Laradockにログイン
- docker exec -it Laradock_workspace_1 /bin/bash

コンテナを止める
- docker-compose stop

## mysql command
MySQLにログイン
- mysql -u default -p

データベースを見る
- show databases;

使用するデータベースを選択する
- use nameOfDatabase;

テーブルの構造を確認する
- desc nameOfTable;

テーブルのデータを確認
- select * from nameOfTable;

テーブル内のカラムに関する情報を表示
- show columns from nameOfTable;

テーブルに格納されているデータを削除
- delete from nameOfTable;

テーブルを削除
- drop tables nameOfTable;

## artisan command
コマンド一覧
- php artisan list

Laravelのversionを確認する
- php artisan --version

.envのkeyをsetする
- php artisan key:generate

マイグレーション実行
- php artisan migrate

一旦全てのテーブルを削除してマイグレーションし直す
- php artisan migrate:fresh

データベースへ初期値を設定する
- php artisan db:seed