Dockerで始めるLaravel講座 - Laravel編

## はじめに

皆さんこんばんわ。

Stay Homeがんばってますか？

Stay Homeとか言う前からこの記事は用意してたんですが、ようやく日の目を見ることができそうで何よりです。

この記事は「Dockerで始めるLaravel講座」のLaravel編です。
[Docker編](https://qiita.com/layzy_glp/items/cc2ac45dd203d73319ad)で作ったDocker環境を使ってLaravel構築を行っていこうかと思いましたが色々手間取りそうだったので最初から作り直します。

---

## おしながき

* Docker環境を作ろう
* Laravelのインストーラーをインストールしよう
* Laravelをインストールしよう
* ログイン画面を作ってみよう

---
# Docker環境を作ろう
---

早速なのですが、何処か新しいディレクトリを作ってから、その中でこちらのコマンドを実行して環境を引っ張ってきてください。

```
$ git clone git@github.com:layzy/docker-laravel.git docker
```

リポジトリのURLはこちらです
https://github.com/layzy/docker-laravel

---

できたら `html` というディレクトリも作ります。
多分こんな感じになるはずです。

```
.
├── docker
└── html
```

---

今回はみんな大好きAmazonLinux2をもとに作ります。
中のDockerfile見ればなんとなく感づいたと思いますが、以下の構成で作ろうかと思います。
CentOS+Apacheで頑張るパターンもたまに見かけますが、AWS使うならこの構成が楽で良いと思います。
（ローカル環境作るのはやや苦労しますが）

* AmazonLinux2
* Nginx
* php-fpm
* php7.4
* mariaDB
* mailcatcher

---

ここまでできたらdockerディレクトリの下にいって、下記のコマンドで一気にコンテナを立ち上げてしまいましょう。

```
$ docker-compose up -d
```

そしたらphpコンテナの中に入ります。どきどき。

```
$ docker exec -it {phpコンテナの名前} bash
```

phpコンテナの名前がわからなかったら `docker ps` コマンドで見てみてください。

---

# Laravelのインストーラーをインストールしよう

---

phpコンテナに入ったら以下のコマンドでLaravelのインストーラーを引っ張ってきます。

```bash
$ composer global require laravel/installer
```

できたら、グローバルインストールしたcomposerの配下にある `vendor/bin` のパスを通してやります。

```
$ export PATH=$PATH:/root/.config/composer/vendor/bin
```

---

すると

```
$ laravel
```

というコマンドが使えるようになります。なんだか怖いね！ｗ

---

# Laravelをインストールしよう

---

Laravelをインストールしてみましょう。
とりあえず何も考えずにドキュメントルートに移動しましょう。

```
$ cd /usr/share/nginx/html
```

で、せっかくLaravelのインストーラーを入れたので、 `app` という名前のプロジェクトを作ってみましょう。

```
$ laravel new app
```

すると一気にめくるめくLaravelのプロジェクトが展開されていきます。
終わったら `http://localhost:8080` にアクセスしてみてください。

---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57811/5a33d79f-5e5d-69cb-d20f-641118c1acec.png)

こんな感じの画面が出てきたらまずは成功です。やったぜ！

---

# ログイン画面を作ってみよう

---

Laravel使ってわざわざ作るようなものはだいたい会員制サービスと相場が決まっています。
スマホアプリのREST APIバックエンドに使うにしたって、ユーザー登録くらいはするのです。
流行りのVue.jsを使ったシャレオツなSPAサイトをササッと作れるのもLaravelの良いところではあるのですが、今回は静的ページで無骨に作りましょう。

---

ではまず、アプリケーションキーを生成しましょう。
Laravelの安全性を高めるために必要な儀式です。
appディレクトリに移動して以下のコマンドを実行します。

```
$ php artisan key:generate
```

これだけです。これをすると `.env` ファイルに `APP_KEY` と言うのが書き加えられてるのがわかると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57811/e1741d9e-a1a7-a22c-8dee-356feef98712.png)

---

このときに使った `artisan` (アーティザン、またはアルティザン) コマンドはLaravelで開発していく上で死ぬほどお世話になります。他のフレームワークにも大体似たようなのはあるので、それのLaravel版だと思ってください。

|FW名|コマンド名|
|---|---|
|CakePHP|bake|
|Symphony|symphony|
|ZendFramework|zf|
|Phalcon|phalcon|
|FuelPHP|oil|
|CodeIgniter|自動生成など甘え、そんなものはない|

---

ついでにDB接続周りの設定もしちゃいましょう。
`.env` ファイルをこんな感じに書き換えてください。

```
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=larapass
```

これでさっき一緒に立ち上げた `mariadb` のコンテナにアクセスできます。

---

そこまでできたら今度はこのコマンドです。
ちょっと時間かかりますが、なかなか驚くかと思います。

```
$ composer require laravel/ui
$ php artisan ui bootstrap --auth
```

---

終わったらさっきのページを読み込み直してみましょう。
するとこんな感じになってると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57811/df0a976f-1727-c8c2-9a03-dc8c4a946db0.png)

この右上のリンクの `LOGIN` というやつを押してみると……

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57811/6f48a5f8-5384-4e2f-d9d2-6f502f613b14.png)

ワオ！　ログインフォームが出てきたぞい！

---

今回はとりあえずここまでです。
次回はもう少しページを増やしたりしてみましょう！

おつかれさまでした！

---

## おまけ

BOOM TECK CAFEオリジナルバーチャル背景
![セミナー用背景.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57811/a8985b73-231b-bf2f-86c1-d8d8639baa93.png)

セミナーの様子はYouTubeでも公開されています！
https://www.youtube.com/watch?v=LPnoqJ6Pl8Y