wordpressのdocker imageをECSにデプロイする

ローカル環境から、ECSにデプロイするまでの手順を書いていきます。

## docker-compose.ymlの作成

まずは、wordpressを環境のためのdocker-compose.ymlを作ります。

ファイルの中身はこんな感じにしました。

```yml

version: "3.3"
services:
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
    privileged: true

  wordpress:
    depends_on:
      - db
    image: wordpress
    ports:
      - "8888:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress

```


そして、アップする

```sh
docker-compose up -d
```

次に、localhost:8888にアクセスして動作確認をします。

![wp1.png](https://qiita-image-store.s3.amazonaws.com/0/254666/bc4b2c08-0535-1056-a5d6-f1e10f5d71f0.png)


確認ができたら、ダウンします

```sh
docker-compose down
```

このdocker-compose.ymlをECSの中で起動します。


## AWSでの作業

ECSアップするまでにやることは、3つです。意外と簡単だと思います。

## 1.リポジトリにアップロードする
* ECRへdocker-compose.ymlをアップします。

* 以下の画面から適当な名前を付けて、次へ
![ecs6.png](https://qiita-image-store.s3.amazonaws.com/0/254666/7c2c8e23-b8fe-743a-8967-82fe58117198.png)

こんな画面になるので、コマンドをそのまま実行します。

![ecs7.png](https://qiita-image-store.s3.amazonaws.com/0/254666/4ade5c54-39fc-4df8-3251-4b70475ac16b.png)


これでECRへの登録は完了です


## 2.タスクを作る

僕の理解ですが、いくつかのリポジトリを一つのプロセス群として、タスクとして定義しておいて、それを、クラスタの中で実行します。

一つまたは複数のリポジトリをタスクという、括りで実行します。逆に言えば、タスクはリポジトリ単位で構成されるということです。


CLIはできるだけ使いません。なぜなら僕ができなかったからです。では、実際にやっていきましょう。


* 以下の画面で、Fargateを選択します。

![ecs3.png](https://qiita-image-store.s3.amazonaws.com/0/254666/821ee00e-3ae5-1ca7-6731-3c8e823af851.png)

* タスクの名前は適当で構いません。
![ecs4.png](https://qiita-image-store.s3.amazonaws.com/0/254666/67074026-6a1a-768b-e6f5-9787e82f19c7.png)

* コンテナの追加のときに、先程アップしたリポジトリを選択します。
 * メモリ制限は128をとりあえず入れといていいと思います。あとは流れでいいでしょう。
![ecs5.png](https://qiita-image-store.s3.amazonaws.com/0/254666/42c4505a-9032-0800-3fa3-dc16d5c826c3.png)




## 3.クラスタを作る
* 平たく理解するなら、これから使いたいコンテナのことです。これを実行すると、ローカル環境で見た画面になります。
では、実際にやっていきましょう。

* AWS Fargateを選択します
![acs2.png](https://qiita-image-store.s3.amazonaws.com/0/254666/b4a3d5f1-cf90-db4b-8b98-1c97d86ef793.png)

* クラスタの名前はこれまた適当で構いません。全部流れで入力できます。
![ecs12.png](https://qiita-image-store.s3.amazonaws.com/0/254666/c81570cb-0bbe-2c4d-9fe4-72aa08d46e56.png)

* この画面になったら完了です。簡単ですね。

![acs1.png](https://qiita-image-store.s3.amazonaws.com/0/254666/b8ed0b98-be4d-0e83-3cce-b02c5e9c5aab.png)


* あとはタスクを実行して、こんな画面から

![ecs9.png](https://qiita-image-store.s3.amazonaws.com/0/254666/088025eb-c86a-2447-3a26-44797e8991b8.png)

* こんな画面にいってIPを見て、ブラウザに入力します。

![ecs10.png](https://qiita-image-store.s3.amazonaws.com/0/254666/ea14d952-4217-bdcb-6907-5dfb257aa848.png)

* 以下の画面が見えたら終わりです。

![wp1.png](https://qiita-image-store.s3.amazonaws.com/0/254666/54e191ee-4463-4f40-84db-6f9b3463a1ab.png)





## おまけ
SSHでコンテナにログインしたいこともあると思うので、SSHキーとセキュリティグループを設定します。
EC2インスタンスの中から、セキュリティグループというのがあるので、その中のSSHの項目を有効にするだけです。




## これをやるに至ったきっかけ
wordpressをDockerでやろうと思いましたが、IP固定、DNS登録、Autoscaling、ボリューム、バックアップの料金
、管理の面倒さがコストになる判断しました。


Dockerのいいとこは、手早く環境を作られること、それによりすぐに開発に移ることがです。

ブログというのはDockerのメリットにそぐわないと判断し、僕はLightsailを使うことにしました。
ブログしたくて、wordpressが欲しかったらLightsailを黙って使うのが、やはりベストプラクティスでした。


参考記事 Qiita
https://qiita.com/niisan-tokyo/items/4e72c6c11c3f9562fe66


ここまで書きましたが、理解が間違っているところは多分にあると思います。
ご指摘よろしくお願いします。ウェルカム指摘。