【素人の備考録】AWSにDocker Composeを使い複数のWordPressを構築する

##1. はじめに
AWS無料枠を使いEC2、EBS、MySQLでWordPressを構築したが、より効率的なDocker Composeでの構築を検証した時の備考欄です。
**作業環境：SSH(ec2-user)でAWSに接続して検証しています。**
##2_1. dockerをインストールする。
```
sudo yum install  -y docker
```
　dockerのバージョン確認する。

```
docker -v
Docker version 19.03.13-ce, build 4484c46
```

　dockerのサービスを実行する。

```
sudo service docker start
```

##2_2. docker composeをインストールする。
　下記サイトを参照した。
 　　https://docs.docker.jp/compose/install.html#linux
　GitHub 上にある Compose リポジトリのリリースページ を確認する。
 　　https://github.com/docker/compose/releases
　バージョン1.27.4をインストールする。

```
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
```
　実行権限の付与をする。

```
sudo chmod +x /usr/local/bin/docker-compose
```
　docker composeのバージョン確認する。

```
sudo /usr/local/bin/docker-compose -version
docker-compose version 1.27.4, build 40524192
```
##3_1.Docker Composeを使ってWordPressを構築する。
　下記サイトを参照した。
>Docker Composeを使ってWordPressが動作するローカル環境を作る
　https://codeaid.jp/blog/docker-wp/

##3_2.作業用フォルダを作成する。

```
mkdir docker_wp
cd docker_wp
```
##3_3.動作環境ファイル(docker-compose.yml)を作成する。
**　備考：WordPress 2サイト、phpMyAdmin 1 サイトの合計3サイト構築します。**

```
nano docker-compose.yml
```
```docker-compose.yml
version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root-pass

  wordpress1:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wp1:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root-pass
      WORDPRESS_DB_NAME: wp1-db

  wordpress2:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wp2:/var/www/html
    ports:
      - "8010:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root-pass
      WORDPRESS_DB_NAME: wp2-db

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: db
    restart: always
    ports:
      - "8080:80"

volumes:
    db_data: {}
```
    
　**備考：ホスト名、ユーザ名、パスワード、データーベースー名、ports等は任意です。**

　**注記：リモートで接続している場合はユーザー（ec2-user→ssm-user)を変更する。**

```
sudo su ssm-user
```
##3_3.下記コマンドを実行する。

```
sudo /usr/local/bin/docker-compose up -d
```
```
Creating network "docker_wp_default" with the default driver
Creating volume "docker_wp_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
6ec7b7d162b2: Pull complete
fedd960d3481: Pull complete
7ab947313861: Pull complete
64f92f19e638: Pull complete
3e80b17bff96: Pull complete
014e976799f9: Pull complete
59ae84fee1b3: Pull complete
7d1da2a18e2e: Pull complete
301a28b700b9: Pull complete
529dc8dbeaf3: Pull complete
bc9d021dc13f: Pull complete
Digest: sha256:c3a567d3e3ad8b05dfce401ed08f0f6bf3f3b64cc17694979d5f2e5d78e10173
Status: Downloaded newer image for mysql:5.7
Pulling wordpress1 (wordpress:latest)...
latest: Pulling from library/wordpress
6ec7b7d162b2: Already exists
db606474d60c: Pull complete
afb30f0cd8e0: Pull complete
3bb2e8051594: Pull complete
4c761b44e2cc: Pull complete
c2199db96575: Pull complete
1b9a9381eea8: Pull complete
50450ffc67ee: Pull complete
4d1e5a768e83: Pull complete
5e8be0d1df16: Pull complete
7a6395859d40: Pull complete
7306499d3dce: Pull complete
fa6f0ba15ac6: Pull complete
308a9ead128f: Pull complete
2db781a8732e: Pull complete
63d3161e9e46: Pull complete
a08dd591ed8a: Pull complete
931a26282f2a: Pull complete
f5c6b405e809: Pull complete
caf2bb847f73: Pull complete
Digest: sha256:dadd8e9c2ef6dc2fe146cbc5f2edc0ed8ae1026ae252b52f25791be4d7d16600
Status: Downloaded newer image for wordpress:latest
Pulling phpmyadmin (phpmyadmin/phpmyadmin:)...
latest: Pulling from phpmyadmin/phpmyadmin
bb79b6b2107f: Pull complete
80f7a64e4b25: Pull complete
da391f3e81f0: Pull complete
8199ae3052e1: Pull complete
284fd0f314b2: Pull complete
f38db365cd8a: Pull complete
1416a501db13: Pull complete
1a45b5b978cd: Pull complete
c662caa8d2ec: Pull complete
2db216a7247d: Pull complete
d23772456121: Pull complete
3c068acf6c51: Pull complete
2980002e0c52: Pull complete
fa017dfc3023: Pull complete
81d3fce49de7: Pull complete
b6e4d8bc5eb9: Pull complete
f905c868a579: Pull complete
23e62ab5144c: Pull complete
Digest: sha256:44e37f6738cb7f5c4203def3b41ee45281286f6b2026826f309d1ab58efe12cb
Status: Downloaded newer image for phpmyadmin/phpmyadmin:latest
Creating docker_wp_db_1 ... done
Creating docker_wp_wordpress1_1 ... done
Creating docker_wp_wordpress2_1 ... done
Creating docker_wp_phpmyadmin_1 ... done
```
##3_4.コンテナの状態を確認する。

```
sudo /usr/local/bin/docker-compose ps
         Name                       Command               State          Ports        
--------------------------------------------------------------------------------------
docker_wp_db_1           docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp 
docker_wp_phpmyadmin_1   /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp
docker_wp_wordpress1_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8000->80/tcp
docker_wp_wordpress2_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8010->80/tcp
```

##4_1.WordPress、phpMyAdmin起動確認をする。
　AWSのポートを確認する。
![aws-port.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685816/29bdfbb9-a151-2d7e-b09e-7d6ea09ef218.jpeg)

　ブラウザより各サイトを確認する。
![kidou.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685816/98f9b9c0-bb89-9431-1808-b8e56f73b5d7.jpeg)

```
http://バブリックIP:8000 → WordPress 1
http://バブリックIP:8010 → WordPress 2
http://バブリックIP:8080 → phpMyAdmin
```
##4_2.WordPressのインストールを実行する。
>WordPressユーザー等の設定後、インストールを実行した後トラブルが発生した。
ターミナルでのコマンドが無反応になったのでAWS EC2ダッシュボードにて
インスタンスを確認したらCPU使用率が99％となってしまった。時間を置いて再度確認したらCPU使用率が下がっていたので、インスタンスの再起度を行いトラブルは回避できた。
![cpu-moniter.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685816/1394f244-4aca-52bd-2c6b-c0f732c30dd5.jpeg)

　docker_wp_wordpress1_1にログインする場合は下記コマンドを実行する。

```
sudo docker exec -i -t docker_wp_wordpress1_1 /bin/bash
```
>備考：docker imagesは下記サイトで確認できる。
https://github.com/docker-library/official-images/tree/master/library

##後書き
　仕事ではVirtualBox等を使い、仮想環境でWindows7、Wndows10等の環境構築を行いWindowsUpdate等の検証を行なっていました。
DockerはOSが無く複数のサイト等が効率的に構築可能であることが検証できました。
今回の検証においてDocker Composeでの作業効率性等を実感することが出来きました。