AWS EC2にDocker ComposeでRedmineを導入

#事前準備
[AWS EC2にDockerでDocker Compose（1.29.2）を導入](https://qiita.com/peanuts2013/items/2ca576e855c880518e45) を参照してDocker Composeを利用できる環境を準備しておきます。

#作業ディレクトリに移動
```
[ec2-user@ip-xxx-xx-xx-xxx container01]$ cd /home/docker/container01
```

#docker-compose.ymlを作成
作成したdocker-compose.ymlは以下に配置。
>/home/docker/container01
>   ├   docker-compose.yml

今回も試すにあたり、[AWS EC2にDockerでRedmineを導入](https://qiita.com/tu-kun/items/a8aa0926b090b7cccc9d) を参照させて頂きました。

- コンテナはRedmine、MySQLを分けてymlファイルを作成
- Redmineのベースイメージには「redmine:passenger」（※1）を指定
- portsには3000番ポートを指定
- volumesにはコンテナ破棄とともにデータが失われないように、外部マウント先（コンテナ外）のストレージに保存
- MySQLのベースイメージには「mysql:5.7」を指定（執筆時点の最新）


※1
Phusion Passenger(非公式にはmod_railsとmod_rackともいう)は、Apache上でRedmaine等Ruby on Railsアプリケーションを実行するためのソフトウェア


```yaml
version: '3.9'

services:
  redmine:
    image: redmine:passenger
    container_name: redmine
    ports:
      - 3000:3000
    environment:
      TZ: Asia/Tokyo
      REDMINE_DB_MYSQL: mysql
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: redmine
      REDMINE_DB_ENCODING: utf8
    depends_on:
      - mysql
    restart: always
    volumes:
      - /var/www/redmine/files:/usr/src/redmine/files
      - /var/www/redmine/log:/usr/src/redmine/log
      - /var/www/redmine/plugins:/usr/src/redmine/plugins
      - /var/www/redmine/public/themes:/usr/src/redmine/public/themes


  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    environment:
      TZ: Asia/Tokyo
      MYSQL_ROOT_PASSWORD: devops
      MYSQL_DATABASE: redmine
      MYSQL_USER: redmine
      MYSQL_PASSWORD: redmine
    volumes:
      - mysql-data:/var/lib/mysql
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci


volumes:
  mysql-data:
    name: mysql-redmine
```
#docker-composeコマンドを実行し、Dockerコンテナ（複数）をバックグラウンド起動
```bash
[ec2-user@ip-xxx-xx-xx-xxx container01]$ docker-compose up -d
Creating network "container01_default" with the default driver
Creating volume "mysql-redmine" with default driver
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
69692152171a: Pull complete
1651b0be3df3: Pull complete
951da7386bc8: Pull complete
0f86c95aa242: Pull complete
37ba2d8bd4fe: Pull complete
6d278bb05e94: Pull complete
497efbd93a3e: Pull complete
a023ae82eef5: Pull complete
e76c35f20ee7: Pull complete
e887524d2ef9: Pull complete
ccb65627e1c3: Pull complete
Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for mysql:5.7
Pulling redmine (redmine:passenger)...
passenger: Pulling from library/redmine
69692152171a: Already exists
0a1f774fea41: Pull complete
3b32b9ebaa42: Pull complete
8115e4beca50: Pull complete
f6fc87221cc8: Pull complete
fecc3ffdf342: Pull complete
2c0766a9fc7f: Pull complete
ce9a5ea49a97: Pull complete
3e4aa5d089ef: Pull complete
76af3ce3b4e9: Pull complete
996a27fc010d: Pull complete
343439c2257c: Pull complete
c3f9dc058e2a: Pull complete
e46a18da2156: Pull complete
Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for redmine:passenger
Creating mysql ... done
Creating redmine ... done
```

#コンテナの状態を確認
```bash
[ec2-user@ip-xxx-xx-xx-xxx container01]$ sudo docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                    NAMES
5d96ebfc23a2   redmine:passenger   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:3000->3000/tcp   redmine
be9531f677b2   mysql:5.7           "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   3306/tcp, 33060/tcp      mysql
```

#MySQLのコンフィグを設定
```bash
[ec2-user@ip-xxx-xx-xx-xxx container01]$ sudo docker exec -it mysql mysql_config_editor set --host=localhost --user=redmine --password
Enter password:    ←★任意のパスワードを入力
```

#Redmine向けにEC2のポートを開放
作成した「docker-compose.yml」ではポート3000番を指定したため、EC2の「セキュリティグループ」を表示してインバウンドルールに3000番ポートを追加する必要があります。
![EC2_Remine_3000番ポート開放.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/eddd76ca-8bd6-2e8c-e1d4-d4c948162ad1.png)

#Redmineにアクセス
ブラウザを起動し、 `http://[Elastic IP アドレス]:3000` にアクセスする。
以下のようにRedmine画面が表示されれば完了。
![Redmineアクセス.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/e4bf26af-7419-25e9-f8cd-721a8fcc4074.png)

#次回の予定
AWS EC2にDocker ComposeでJenkinsを導入する記事を投稿予定。