【最新版】はじめてのLaravel！Laradockを用いたLaravel開発環境構築


- 最終編集日(2021年2月)
    - PHP、Dockerのインストールも後日投稿予定です。[アカウントをフォロー](https://qiita.com/techpit-jp)してお待ちください！

**【追記】**
Dockerの環境構築方法に関する記事を投稿いたしました！

- Mac
 - [【すぐ開発を始めたい人向け】DockerをMacインストールする手順](https://qiita.com/techpit-jp/items/d17e2585888daa8d4bff)
- Windows
 - [🐳WindowsでDockerを始める手順🐳](https://qiita.com/techpit-jp/items/f4a1319a909dd508f372)
 - [🐳Docker Toolboxのインストール🐳](https://qiita.com/techpit-jp/items/1fed1325bdbc62d216d3)

環境構築だけ読みたい方は、[Laravelの環境構築](#laravelの環境構築)まで読み飛ばしてください。

## 概要
本記事は、PHPのフレームワークである**Laravel**の環境構築を解説した記事です。

構築する Laravel 及び PHP のバージョンは以下になります。

- Laravel 8.x
- PHP 7.4

初めてLaravelを使う方、一度環境構築で挫折した方でもつまずかないことを心掛けて執筆しました。

何かわからないことことがありましたら、コメントでお知らせください！

## 環境
**Docker for Desktopのインストールが必要になります**

- Mac
- Windows
  - Windows 10 homeの方は、Windowsをバージョン2004,ビルド19041以上にアップデートした上でWSL 2のインストールが必要になります
  - Docker Toolboxでも環境構築をすることはできますが、一部コマンドが異なる場合があります
- 本記事では`MySQL`を使います。`PostgreSQL`での環境構築も可能ですが、[Laradockの起動](#laradockの起動)で一部コマンドが異なります。

### Laradock で使用できる PHP バージョン早見表
Laradockで使用できるPHP、Laravelのバージョンは以下の通りです。
※2021年1月現在公式サポートされているPHPのバージョンのみ記載しています。

|PHPバージョン|Laradock対応|
|:---|:---|
|7.3|〇|
|7.4|〇|
|8.0|×|

## 前提条件
- gitをインストールしていること
- Docker for Desktopをインストールしていること


**Terminal**で以下のコマンドを実行して正しく出力されるかを確認してください。

```
$ git --version
git version 2.9.0
$ docker --version
Docker version 19.03.1, build 74b1e89e8a 
$ docker-compose --version
docker-compose version 1.24.1, build 4667896b
```
※Dockerのバージョンは`17.12`以降である必要があります。
(参考) [Getting Started](https://laradock.io/getting-started/)

## Laravelの環境構築

それでは実際にLaravelの環境構築を行っていきましょう。


### プロジェクトディレクトリの作成

`mkdir`コマンドで`Laradock`をインストールするディレクトリを作成します。ここでは、`laravel-workspace`としています。

```
mkdir laravel-workspace
```

`cd`コマンドで作成したディレクトリに移動します。

```
cd laravel-workspace
```

### Laradockのインストール

[Laradock](http://laradock.io/)をインストールしていきます。

以下のコマンドを実行します。

```
$ git clone https://github.com/Laradock/laradock.git
```

インストールが終わると以下のように表示されます。

```
$ git clone https://github.com/Laradock/laradock.git
Cloning into 'laradock'...
remote: Enumerating objects: 11524, done.
remote: Total 11524 (delta 0), reused 0 (Rdelta 0), pack-reused 11524eceiving objects: 100% (11524/11524), 11.36 MiB | 3Receiving objects: 100% (11524/11524), 11.42 MiB | 346.00
 KiB/s, done.
Resolving deltas: 100% (6203/6203), done.
Checking connectivity... done.
```

`laradock`ディレクトリが作成されていることがわかります。

```
$ ls
laradock/
```

`Laradock`のインストールは以上です

### .env ファイルの編集

`.env`ファイルを編集することで、プロジェクトの環境変数を定義していきます。使用するデータベースやPHPのバージョンなどもここで指定します。

`cd`コマンドを使って先ほど作成された`laradock`ディレクトリに移動しましょう。

```
$ cd laradock
```

`laradock`ディレクトリの中には、`env-example`という`.env`のサンプルがあります。これをコピーして使用します。以下のコマンドでコピーしてください。

```
cp env-example .env
```

`.env`を編集していきます。お好きなエディタで`.env`ファイルを開いてください。

#### 1.プロジェクトの相対パスの指定
プロジェクトを作成するにあたり、パスを指定します。
ここでは、`laravel-project`というプロジェクトを`laradock`同じ階層に作成します。

```
laravel-workspace
├── laradock
└── laravel-project
```

**8行目**を以下のように編集してください。

```diff:.env
- APP_CODE_PATH_HOST=../
+ APP_CODE_PATH_HOST=../laravel-project
```
#### 2.データベースのディレクトリ変更

デフォルトでは、データベースなどがホームディレクトリに保存されるようになっています。
プロジェクトディレクトリ配下に作成されるように設定を変更しましょう。

**17行目**を以下のように編集してください。

```diff:.env
- DATA_PATH_HOST=~/.laradock/data
+ DATA_PATH_HOST=.laradock/data
```
#### 3. コンテナ名の変更

ここでは、Dockerを起動するときのコンテナ名を指定していきます。「コンテナ？」という方はコピペしていただいて構いません。
※Dockerに関しては「[いまさらだけどDockerに入門したので分かりやすくまとめてみた](https://qiita.com/gold-kou/items/44860fbda1a34a001fc1)」の記事が非常にわかりやすいです。

**36行目**を以下のように編集してください。

```diff:.env
- COMPOSE_PROJECT_NAME=laradock_
+ COMPOSE_PROJECT_NAME=laravel-project
```

#### 4. PHPのバージョン設定
PHPのバージョンを設定します。

**42行目**を使用したいPHPのバージョンに変更します。
ここでは、`PHP 7.4`を指定します。

```diff:.env
- PHP_VERSION=7.3
+ PHP_VERSION=7.4
```
2021年1月現在のLaradockがサポートしているPHPのバージョンに関しては[こちら](#phpバージョン早見表)をご覧ください。

### Laradockの起動
それではLaradockを起動していきます。

`laradock`ディレクトリで以下のコマンドを実行してコンテナを起動します。

※`postgres`を使用している場合は、`mysql`の部分を`postgres`に置き換えてください。

```
$ docker-compose up -d php-fpm nginx mysql workspace
```

以下のように表示されればOKです。

```
$ docker-compose up -d nginx mysql workspace
.
.
.
Creating laravel-project_docker-in-docker_1 ... done
Creating laravel-project_mysql_1            ... done
Creating laravel-project_workspace_1        ... done
Creating laravel-project_php-fpm_1          ... done
Creating laravel-project_nginx_1            ... done
```

### Laravelアプリケーションの作成

それではLaravelのアプリケーションを作成していきます。以下のコマンドを実行してください。

```
$ docker-compose exec workspace bash
```
以下のような表示になれば正常に`bash`が起動できています。

```
$ docker-compose exec workspace bash
root@6095e16a845d:/var/www#
```

コマンドの最後には、Laravelのバージョンを指定しています。2021年現在、最新版は`Laravel8.x`です。ここでは`8.*`を指定していますが、コマンドの最後の数字を変えることで、別のバージョンのLaravelでアプリケーションを作成をすることができます。

```
# composer create-project --prefer-dist laravel/laravel="8.*" .
```

※アプリケーションの作成には少し時間がかかります。

`Application key set successfully.`と表示されればアプリケーションの作成は完了です。

以下のように[プロジェクトの相対パスの指定](#### 1.プロジェクトの相対パスの指定)で指定した名前と同じフォルダが作成されています。

```
laravel-workspace
├── laradock
└── laravel-project
```


### アプリケーションの確認
http://localhost にアクセスしてLaravelプロジェクトが作成されているか確認してみましょう。
![image](https://i.gyazo.com/a9cf21a76d768d638cb666665ecdd798.png)

上記のように表示されていれば正常にアプリケーションが作成されています。

### コンテナの停止

コンテナを停止するときは以下のコマンドで停止することができます。

```
$ docker-compose stop
```

## 参考
- [Laravel](https://laravel.com/)
- [PHP](https://www.php.net/ChangeLog-7.php)
- [Laradock](http://laradock.io/)

※本記事は[Techpit](https://www.techpit.jp/?utm_source=qiita&utm_medium=social_media&utm_campaign=qiita&utm_content=laravel1)の教材を一部修正したものです。

最後まで読んでいただきありがとうございました。今後も、PHP・Laravelに関する記事を投稿していきますので、もしよろしければ、[Techpit](https://qiita.com/techpit-jp)をフォローしてお待ちください！