AWS Cloud9+Docker ComposeでLaravel環境を構築その壱

Macでも・・・Windowsでも・・・Docker環境を構築できない場合、Cloud9しかないかなあ〜と思ったのでやってみました。

# マシンスペック
* Mac mini 2018
* macOS Catalina（10.15.x）
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# Docker環境
* Nginx 最新版
* PHP（PHP-FPM）7.2.x
* MySQL 5.7.x
* Composer 1.x
* Laravel 5.6.x

# やること
* Docker ComposeでLaravel環境構築

# AWS Cloud9の準備

下記サイトを開く。
[AWS Cloud9（Cloud IDE でコードを記述、実行、デバッグ）| AWS](https://aws.amazon.com/jp/cloud9/)

![スクリーンショット 2021-04-19 23.49.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/62c47193-38b4-986b-8560-d99ce4049ab1.png)

### アカウント作成

アカウントが無ければ作成する。
![スクリーンショット 2021-04-19 23.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/92972112-9889-7e58-d055-e50c10d2cb23.png)

※以降のステップは、画面指示に従って入力する。

![スクリーンショット 2021-04-19 23.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/00a0c006-0381-63f1-98b3-f1f441e6c3f3.png)

### サインイン
![スクリーンショット 2021-04-20 0.01.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/216c4768-4693-e1b2-4d81-2bf477d4bccc.png)

### リージョン変更
![スクリーンショット 2021-04-20 0.08.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/b380957e-e52a-5c13-0ab4-c3a4dcf0a396.png)

### Cloud9を開く
![スクリーンショット 2021-04-20 0.03.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/38d9e728-c162-0b2d-4031-74c828914b51.png)

### 環境を作成
![スクリーンショット 2021-04-20 0.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/c1d2701e-9a86-cff8-063a-8e1c97943981.png)


![スクリーンショット 2021-04-20 0.10.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/ec409f55-b08c-c706-f95c-f042594294ff.png)

※ステップ2はデフォルトのままでステップ3へ。

![スクリーンショット 2021-04-20 0.13.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/77557f50-c0d0-3f2b-612b-4fe7fc1b506b.png)

少し待つと下記が作成される。
![スクリーンショット 2021-04-20 0.26.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/00d03e8d-fc18-f192-e8f3-9cbb4b10c4ed.png)

※参考
[初めてのAWS Cloud9導入](https://qiita.com/tu-kun/items/d7b4f1fa19cc93bc5b75)

# Docker環境を準備

下記を参考に```docker-compose```をインストールする。
[AWS Cloud9環境でdocker-composeをできるようにする](https://qiita.com/okenak/items/51d2fc2e6a4b8adace2a)


### Laravel環境の準備

各環境の操作は、下記のように記載します。

```
[Cloud9]$ Cloud9のターミナルでCloud9内の作業
[PHP   ]$ Cloud9のターミナルからPHPコンテナに接続して作業
```

コンテナ定義をクローンする。

```console
[Cloud9]$ git clone https://github.com/bobtabo/docker-cloud9.git docker
```

コンテナを起動する。

```console
[Cloud9]$ cd docker
[Cloud9]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php   ... done
Creating nginx ... done
```

PHPコンテナに入る

```console
[Cloud9]$ docker-compose exec --user 1000 php bash
```

Laravel環境を準備する。

```console
[PHP]$ pwd
/home/docker

[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
```

下記でコンテナから抜けられる。

```console
[PHP]$ exit
```

### ブラウザで動作確認

「Preview」 → 「Preview Running Application」を選択する。
![スクリーンショット 2021-04-20 2.35.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/406f6ada-cc35-4c76-aa9d-bf5033f8ac16.png)

ブラウザを別タブで開く。
![スクリーンショット 2021-04-20 2.41.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/0e4c38b4-d638-23ae-3262-03fdea9fa689.png)

下記ページが表示されればOK。
![スクリーンショット 2021-04-20 2.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/2fbcaac7-dee1-736f-4fee-6900a9c4a5fd.png)


※参考
[cloud9 で Nginx を使う](https://monteecristoo.hatenablog.com/entry/2018/08/03/193627)
[Cloud9 × Raisl × Docker × MySQL で環境構築](https://laptrinhx.com/cloud9-raisl-docker-mysql-de-huan-jing-gou-zhu-3148676112/)

### コンテナ削除

```console
[Cloud9]$ docker-compose down --rmi all --volumes
```

※参考
[《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド](https://qiita.com/suin/items/19d65e191b96a0079417)