AWS EC2にDocker ComposeでJenkinsを導入

#事前準備
[AWS EC2にDocker ComposeでRedmineを導入](https://qiita.com/peanuts2013/items/6becf7fb22d8b4251b92) の続きとなります。

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

#docker-compose.ymlを編集
今回は試すにあたり、[AWS EC2にDockerでJenkinsを導入](https://qiita.com/tu-kun/items/741cb80276e1c345c6e4) を参照させて頂きました。

- Jenkinsのベースイメージには「jenkins:jenkins:latest」を指定
- portsには3001番ポートを指定

```yaml
version: '3.9'

services:

#前回の続きのため、Redmine, MySQL部分のコンテナ設定は割愛

  jenkins:
    image: jenkins:jenkins:latest
    container_name: jenkins
    restart: always
    ports:
      - 3001:8080
    environment:
      JENKINS_OPTS: '--prefix=/jenkins'
    volumes:
      - /var/www/jenkins/home:/var/jenkins_home

volumes:
  mysql-data:
    name: mysql-redmine
```

#Jenkinsディレクトリ権限を変更
su権限にて、mkdirコマンドで/var/www/jenkins/homeを作成しておきます。

```bash
[ec2-user@ip-xxx-xx-xx-xxx www]$ ll
total 0
drwxr-xr-x 3 root root 18 Jun 18 21:33 jenkins
drwxr-xr-x 6 root root 59 Jun 12 00:59 redmine
[ec2-user@ip-xxx-xx-xx-xxx www]$ sudo chown -R 1000:1000 jenkins
[ec2-user@ip-xxx-xx-xx-xxx www]$ ll
total 0
drwxr-xr-x 3 ec2-user ec2-user 18 Jun 18 21:33 jenkins
drwxr-xr-x 6 root     root     59 Jun 12 00:59 redmine
[ec2-user@ip-xxx-xx-xx-xxx www]$ cd jenkins/
[ec2-user@ip-xxx-xx-xx-xxx jenkins]$ ll
total 0
drwxr-xr-x 2 ec2-user ec2-user 6 Jun 18 21:33 home
```

#docker-composeコマンドを実行し、Dockerコンテナ（複数）をバックグラウンド起動
```bash
[ec2-user@ip-xxx-xx-xx-xxx container01]$ docker-compose up -d
Pulling jenkins (jenkins/jenkins:latest)...
latest: Pulling from jenkins/jenkins
d960726af2be: Pull complete
971efeb01290: Pull complete
63355dfa68bf: Pull complete
0338c2e2964b: Pull complete
4fd60233bacd: Pull complete
0607cfd712b0: Pull complete
c344ff771a55: Pull complete
99ba4b8ae29b: Pull complete
44de4b7a26bd: Pull complete
67c453bade0a: Pull complete
34cb611cbe79: Pull complete
f30d6e8e3564: Pull complete
64e03652f7ea: Pull complete
70430e736ff5: Pull complete
f89c7041f1b4: Pull complete
ed60ce178bf3: Pull complete
Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for jenkins/jenkins:latest
Starting mysql   ... done
Creating jenkins ... done
Starting redmine ... done
[ec2-user@ip-xxx-xx-xx-xxx container01]$ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS              PORTS                               NAMES
16e8d79e89d1   jenkins/jenkins:latest   "/sbin/tini -- /usr/…"   About a minute ago   Up About a minute   50000/tcp, 0.0.0.0:3001->8080/tcp   jenkins
5d96ebfc23a2   redmine:passenger        "/docker-entrypoint.…"   6 days ago           Up About a minute   0.0.0.0:3000->3000/tcp              redmine
be9531f677b2   mysql:5.7                "docker-entrypoint.s…"   6 days ago           Up About a minute   3306/tcp, 33060/tcp                 mysql
```

#コンテナの状態を確認
```bash
[ec2-user@ip-xxx-xx-xx-xxx container01]$ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS              PORTS                               NAMES
16e8d79e89d1   jenkins/jenkins:latest   "/sbin/tini -- /usr/…"   About a minute ago   Up About a minute   50000/tcp, 0.0.0.0:3001->8080/tcp   jenkins
5d96ebfc23a2   redmine:passenger        "/docker-entrypoint.…"   6 days ago           Up About a minute   0.0.0.0:3000->3000/tcp              redmine
be9531f677b2   mysql:5.7                "docker-entrypoint.s…"   6 days ago           Up About a minute   3306/tcp, 33060/tcp                 mysql
```

#Jenkins向けにEC2のポートを開放
作成した「docker-compose.yml」ではポート3001番を指定したため、EC2の「セキュリティグループ」を表示してインバウンドルールに3001番ポートを追加する必要があります。
![EC2_Jenkins_3001番ポート開放.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/dfe1dd4a-04d1-12e3-06b5-428ad20cd16d.png)

#Jenkinsにアクセス
ブラウザを起動し、 `http://[Elastic IP アドレス]:3001/jenkins/` にアクセスする。
以降、その後の画面遷移を参考としてキャプションを残しておきます。

- ① 初回アクセス時の画面
コピペ用コマンド：cat /var/www/jenkins/home/secrets/initialAdminPassword
![Jenkins_初回パスワード入力画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/a2672e4a-4e5f-2c71-eb66-7fc8f5cde945.png)

- ② Customize Jenkins画面
「Select plugins to install」を選択し、任意のpluginsを選択する。
![Customize Jenkins画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/e2f83f22-07aa-648f-ed7e-332a0cebf051.png)

- ③ Getting Started画面
![Jenkins_plugins_Getting Started画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/253bc646-d543-1dc7-37bd-1a237458c0f0.png)

- ④ Create First Admine User画面
各入力項目は任意の内容で入力し、「Save and Continue」ボタンを押下する。
![Jenkins_Create First Admin User画面_re.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/00ee79d0-454c-6416-0fa5-c72b5731b584.png)

- ⑤ Jenkinsへようこそ！画面が表示されれば完了
![Jenkinsへようこそ！画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32811/2e237148-76ae-c2d7-6ee1-5c883fc0955f.png)

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