【CentOS 7.3】dockerをインストールしてredmineを起動する。easy_ganttも入れてみる。

# はじめに

既存のプロジェクトではプロジェクト管理が複数のツールによって行われてました。

- スケジュール：Excel
- タスク：各自好きなツール or Redmine
- チケット：Redmine
- ノウハウ：Excel or Redmine

この状況だと色々なところに情報が散ってしまっていて、欲しい情報が探しづらいですし、いろんなツールを使うことになるのでめんどくさくなって、クローズされないチケットが無限に発生してました。

それらを踏まえて自分が管理することになった次のプロジェクトでは1ツールで一元管理していこう！と思ったのがスタートです。
条件としては無償、オンプレで使用可能なのが大前提になるので、Redmineを選択しました。
チケットとWikiを使えば、タスクやらノウハウは管理できるとして、スケジュール管理はできるのだろうか？
と思いながらプラグインを探していた時にEasyGanttを見つけたのでインストールしてみました。

以前作成したRedmineにプラグインを追加しようと試みましたが、bundle installが失敗したり、前に入れたプラグインの関係で上手く動かなかったりとあったので、興味もあったdockerで作ってみよう！となりました。

# 前提

| アプリ | バージョン |
|:--|--:|
|OS|CentOS 7.3|
|Docker|18.09.4|
|Redmine|3.4.10|
|EasyGantt|4.x|

# dockerのインストール

[公式](https://docs.docker.com/install/linux/docker-ce/centos/)の手順通りにコマンドを実行していきます。（rootユーザで実施）

## 依存ツールのインストール

```
yum install -y yum-utils device-mapper-persistent-data lvm2
```

## リポジトリの追加

```
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
```

## dockerのインストール

```
yum install -y docker-ce docker-ce-cli containerd.io
```

## dockerの起動、自動起動設定

```
systemctl start docker
systemctl enable docker
```

# Redmineのインストール

easy_ganttをインストールするためにはredmineが3.4系でないとダメという記事があったので、3.4.10を使用します。
参考：[[docker/redmine4.0.1]プラグイン"easy gantt"を入れようとすると怒られる](https://qiita.com/missyyy/items/9706ee3705cc8cb73b76)

## docker-composeコマンドのインストール

.ymlファイルを用意しておけばコンテナの作成などを自動で行ってくれるらしいので用意しておく。

```
curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```

## dockerファイルをダウンロード

よく使われているらしいsameersbnのredmmineイメージを使用します。

```
mkdir -p /opt/www/redmine
cd /opt/www/redmine
git clone -b 3.4-stable  https://github.com/sameersbn/docker-redmine.git
```

## コンテナの起動

### docker-compose.ymlの修正

ダウンロードしたディレクトリ内のdocker-compose.ymlを修正します。
必要に応じてDBのユーザ/パスワードも変更してください。
今回はローカル環境で使用するだけなのでデフォルトのまま作成します。

```diff
environment:
-    - TZ=Asia/Kolkata
+    - TZ=Asia/Tokyo
```

### docker-composeの起動

必要なdockerファイルなどは自動でダウンロード/インストールしてくれるので、とりあえず起動します。
2回目からはインストール済みのファイルを使用してくれます。

```
cd /opt/www/redmine/docker-redmine
docker-compose up
```

色々なものをダウンロードしているので時間がかかりますが最終的に以下が表示されれば起動完了です。

```
redmine_1     | 2019-04-02 14:21:12,936 INFO supervisord started with pid 1
redmine_1     | 2019-04-02 14:21:13,941 INFO spawned: 'unicorn' with pid 228
redmine_1     | 2019-04-02 14:21:13,950 INFO spawned: 'cron' with pid 229
redmine_1     | 2019-04-02 14:21:13,960 INFO spawned: 'nginx' with pid 230
redmine_1     | 2019-04-02 14:21:15,701 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
redmine_1     | 2019-04-02 14:21:15,701 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
redmine_1     | 2019-04-02 14:21:15,701 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
```

ブラウザでhttp://localhost:10083 にアクセスして以下のようなRedmineのTOPページが表示されれば成功です。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/379994/9220f428-af30-12f0-6104-9facebd0ce23.png)

ちなみに初期状態では管理者ユーザしか作成されていません。
ログインボタンを押して管理者ユーザとしてログインし、各ユーザを作成しましょう。

| ユーザ名 | パスワード |
|:-:|:-:|
| admin  | admin  |

### デーモンとして起動

これまでの状態だとターミナル上で起動してしまっているので、ターミナルを閉じるとRedmineも終了してしまいます。
なので、一度プロセスを停止しデーモンとして起動します。

#### プロセスの停止

```
Ctrl + C
```

#### デーモン起動

-dオプションを付けることでデーモンプロセスとして起動します。

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

停止したい場合には以下コマンドを実行します。

```
docker-compose stop
```

## easy_ganttプラグインのインストール

### easy_ganttのダウンロード

[easyRedmine](https://www.easyredmine.jp/?utm_campaign=jpn-eng-local-all-group-0000&gclid=Cj0KCQjw7YblBRDFARIsAKkK-dIsWzHZfgk7wMerPoK3ETLFvNwnCT7iJeMAZ5Vcja6MFkL1dO0aoHEaAljWEALw_wcB)のホームページからダウンロードしましょう。
以下情報を入力することで無償版のダウンロードリンクが張られたメールが送られてきます。
（メールが来るまでに何時間かかかった人もいるようです。私は10分ぐらいで受信しました。）

- 氏名
- メールアドレス
- 電話番号

### 資材の配置

[git Installing Plugins](https://github.com/sameersbn/docker-redmine/tree/3.4-stable#installing-plugins)の手順通りにやっていきます。
docker上のRedmineにプラグインを追加する場合は、「/srv/docker/redmine/redmine/plugins」に資材を配置します。

```
cd /opt/www/redmine
wget {メールに記載されていたダウンロードURL}
unzip EasyGanttFree.zip
unzip EasyGanttFree-4.x.zip
mv easy_gantt/ /srv/docker/redmine/redmine/plugins/
```

### Redmineの再起動

資材の配置はこれだけで完了です。
後はRedmineを再起動するだけでeasy_ganttが有効になります。
（dockerなしでやろうとしたときはエラー吐きまくってて挫折したbundle installがいらないなんて、、、神か）

```
cd /opt/www/redmine/docker-redmine
docker-compose restart
```

あらためてRedmineに接続してみると？
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/379994/de6f8f4a-492c-68cb-b66e-98bc4004af66.png)

Easy Ganttのリンクが追加されていますね。

## Easy Ganttの設定

追加されたリンクをクリックするとなにやら警告されています。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/379994/b8837931-8ab0-3aa5-cbb5-c2b85e3a9e48.png)

とりあえず言われた通りにチェックを入れて保存します。（管理者ユーザでログインしてる必要があります。）
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/379994/52410e65-9781-9398-6ad8-0ce837aab9c1.png)

### Internal errorが発生

余裕じゃーんとか思っていたらエラーが発生しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/379994/ca45d137-1461-d162-1759-0bef6997e1bd.png)

様々なeasy ganttのインストール手順にDBをmigrateしろ的なことが書いてあったのでやってみます。

#### コンテナのコンソールに接続

コンテナの中に入ってDBのマイグレーションを行う。

```
docker exec -i -t docker-redmine_redmine_1 bash
=======ここからコンテナ内================================================
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
exit
```

Redmineを再起動して接続してみる。
　→無事に表示されました！
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/379994/64218e74-efef-47ac-3bea-06b5f668abc6.png)

# 終わりに

これでEasy Ganttを使う準備が完了しました。
後は自分でいじり倒していくだけですね。他にも気になってるプラグインもあるし。。。

ついついツールをいじりだすと凝ってしまいますが、そろそろどうやったらプロジェクトを上手く回せるかも考えていかねばな。。。
そのうちRedmineを使ってプロジェクトを上手く回せたかとかも記事にしたいですね。