RundeckをDockerで動かす（Rundeck+MariaDB+Nginx）

#はじめに
Rundeckをコンテナ化、更にNginxとMariaDBのコンテナも同時に作成する`Docker Compose`を公開します。
基本的に下記の手順で進めていけば、**単一ノード**上に３つのコンテナが作成され、Rundeckを利用できるようになると思います。

#要件

- `docker`がインストール、サービスが起動されている
- [`docker-compose`](https://qiita.com/youtanagai/items/ff67ceff5497a0e0b1af) がインストールされていて、`sudo`せず実行できる

# 前準備
##~~systemd対応コンテナイメージ作成~~ ※2019/1/3 削除
~~Rundeck、Nginxコンテナのベースとなる、systemdに対応したCentOS7コンテナイメージを作成する。~~

###~~Dockerfile作成~~
~~適当な場所に、下記内容のDockerfileを作成する。~~

~~```dockerfile:Dockerfile
FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
```~~

###~~イメージのビルド~~

~~```bash
$ docker build --rm -t local/c7-systemd .
```~~

###~~イメージ確認~~
~~`local/c7-systemd`という名前でイメージが作成されているか確認~~

~~```bash
$ docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
local/c7-systemd                                       latest              3a8a2fd24810        19 seconds ago      200MB
```~~

# Rundeck、MariaDB、Nginxのコンテナ作成
### ファイルのダウンロード
GitHubから`Rundeck for Docker`のファイル一式を、ローカルマシンの任意の場所（今回はディレクトリ`rundeck-service`以下）にダウンロードする。

```bash
$ git clone https://github.com/k-nagase/docker-rundeck.git
```

ちなみにダウンロード後は、以下のようにディレクトリ、ファイルが展開される。

```text
.
├── .env
├── docker-compose.yml
├── nginx/
│    ├── Dockerfile
│    └── conf.d/
│          └── default.conf
├── rundeck/
│    ├── Dockerfile
│    └── groovy/
│          └── rundeck-config.groovy
└── data/  ←Runeck, MariaDBのデータ永続化用（setup.sh実行時に作成され、コンテナ側から保存される）
```

### 環境変数の設定変更
`docker-compose`が参照する環境変数定義ファイル`.env`の内容を、自身の環境に合わせて適宜変更する。
尚、`※`印が付いている変数は変更必須。
また送信メールサーバは`Gmail`を利用する設定にしているので、その他のメールサーバを利用する場合は適宜変更すること。

```bash:.env
# for Rundeck
JAVA_VERSION=1.8.0
RUNDECK_HOST_NAME=rundeck.example.com    #Rundeckホスト名orIPアドレス（※）
RUNDECK_PORT=4440    #Rundeckポート番号
RUNDECK_REPO=http://repo.rundeck.org/latest.rpm    #Rundeck公式リポジトリのURI
RUNDECK_VERSION=2.11.8-1.59.GA    #Rundeck 2系の最新バージョンを指定 →https://docs.rundeck.com/download/rpm/

# for MariaDB
MYSQL_ROOT_PASSWORD=password    #MariaDBのRootパスワード（※）
MYSQL_DATABASE=rundeck    #Rundeckの接続データベース
MYSQL_USER=rundeck    #Rundeckの接続ユーザー名
MYSQL_PASSWORD=password    #Rundeckの接続パスワード（※）

# Mail Sender for Rundeck
SMTP_HOST=smtp.gmail.com    #送信用メールサーバ
SMTP_PORT=465    #SMTPポート番号
SMTP_USERNAME=hoge@gmail.com    #SMTP-AUTHユーザー名（※）
SMTP_PASSWORD=p@ssw0rd    #SMTP-AUTHパスワード（※）
SMTP_PROPS=\"mail.smtp.auth\":\"true\",\"mail.smtp.socketFactory.port\":\"${SMTP_PORT}\",\"mail.smtp.socketFactory.class\":\"javax.net.ssl.SSLSocketFactory\",\"mail.smtp.socketFactory.fallback\":\"false\"    #その他のSMTPプロパティ
```

### コンテナのビルド
`setup.sh`を実行して、コンテナをビルド＆起動する。

```bash
$ chmod +x setup.sh
$ ./setup.sh
```

### コンテナ起動確認
`app`(`rundeck`)、`db`(`mariadb`)、`web`(`nginx`)の各コンテナが起動（`State=Up`)していることを確認

```bash
$ docker-compose ps
        Name                       Command               State           Ports
---------------------------------------------------------------------------------------
rundeck-service_app_1   /usr/sbin/init                   Up      0.0.0.0:4440->4440/tcp
rundeck-service_db_1    /docker-entrypoint.sh mysq ...   Up      0.0.0.0:3306->3306/tcp
rundeck-service_web_1   /usr/sbin/init                   Up      0.0.0.0:80->80/tcp
```

### イメージ確認
上記コンテナと同様に、イメージが作成されていることを確認

```bash
$ docker-compose images
      Container             Repository         Tag       Image Id      Size
----------------------------------------------------------------------------
rundeck-service_app_1   rundeck-service_app   latest   151baafbe0da   510 MB
rundeck-service_db_1    centos/mariadb        latest   031e35c33d3b   378 MB
rundeck-service_web_1   rundeck-service_web   latest   b233183eb096   259 MB
```

### アクセス
ブラウザから `http://<RUNDECK_HOST_NAME>`にアクセスし、ログイン＆コンソールが表示されたら完了。
![FireShot Capture 12 - Rundeck - http___10.0.1.231_menu_home.png](https://qiita-image-store.s3.amazonaws.com/0/94476/8c28ebbb-2398-1528-6e64-5d807ba89c5c.png)