入社2年目のサーバ担当黒松です。
(最近スイッチの「ス」もかじり始めました)
最近暑い日が続いていたので、早くも?冷房をつけはじめてしまいました。
毎年思いますが、夏を乗り切れる気がしません…
(なんやかんやで結局乗り切れるんですけどね~)
しかも日本は湿度が高いのでジメジメべたべたするのが嫌ですよね~。
ハワイに逃亡したいな、そろそろコロナ収束してほしいな、
と願う今日このごろです。
さて、今回はタスク管理ソフトとして有名な「Redmine」の構築手順を
書いていきたいと思います。
今回は仮想マシン上ではなく、コンテナを使ってRedmine を構築しました。
まず、コンテナ?なにそれ?仮想化と似てる??Docker??むむ?むむむむ?
という、???だらけなところからスタートしたのですが、
コンテナやDockerについて学びながら作業していくと
あっという間にRemineの構築ができ、
OS構築から始めるより簡単で早くない?!
と感じました。
なので今回のブログでは、簡単にコンテナ(Docker)について説明しつつ
・Dockerを使ったRemineの構築手順
・Remineの拡張機能設定
・GUI操作時のおすすめ設定
を説明していきます!
コンテナ(Docker)とは?
まずはじめに、コンテナとは
“ホストOS上にコンテナで区切られたプロセスを構築”できる技術です。
仮想マシンの場合、イメージ図のように
“ホストOS+ハイパーバイザ+ゲストOS+プロセス”
となっています。

一方コンテナの場合は「ハイパーバイザ+ゲストOS」が不要で、
代わりに「コンテナエンジン」を使用するため
“ホストOS+コンテナエンジン+プロセス”となります。

※プロセスは、コンテナで区切られた領域の中で稼働します。
なので、コンテナは仮想マシンに比べて
●構築が簡単&スピーディー!
●少ない消費リソースでサービスを稼働できる!
などのメリットが挙げられます。
上記イメージ図に記載した「コンテナエンジン」はコンテナを稼働するために必要なものですが、
その中で最もメジャーな製品が「Docker」です。
Dockerコンテナをまとめてデプロイ、設定を自動で行ってくれる「Docker Compose」も利用することで
Docker Composeファイルを作成するだけですぐにコンテナ構築&サービス稼働が可能になります。
他にもメリットいっぱい!の「Docker」ですが、
本題のRemine構築にたどり着けなくなりそうなので
コンテナや「Docker」についてはここまでにしておきますm(__)m
それでは、本題のDockerでRedmineを簡単&スピード構築する方法をご説明します。
※DockerやDocker Composeのインストール手順については省略させていただきます。
 以下の公式リファレンスをご参照ください。
・Install Docker Engine
・Install Docker Compose
DockerでRedmineを構築する方法
環境設定
設定の流れ
1. Redmineのコンテナ作成
2. GUIでの基本操作
3. プラグインのインストール
4. Redmineのおすすめ設定
設定手順
それでは詳しい設定手順をご説明します。
1. Redmineのコンテナ作成
まずはDocker-composeに読み込ませるためのファイル「docker-compose.yml」に
Redmineのデプロイ情報を記述していきます。
※docker-compose.ymlとは、コンテナのデプロイ内容やコンテナ内のアプリケーションの設定を記述するファイルです。
 詳細は公式リファレンスをご参照ください。
⚫docker-compose.ymlを作成
| 1 2 3 | # mkdir /usr/local/redmine # cd /usr/local/redmine # vi docker-compose.yml | 
⚫docker-compose.ymlに以下を記述
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | version: '3.8' services:   redmine:     image: redmine     container_name: redmine     ports:       - 3000:3000     volumes:       - ./data/plugins:/usr/src/redmine/plugins       - ./data/themes:/usr/src/redmine/public/themes     environment:       REDMINE_DB_MYSQL: redmine-db       REDMINE_DB_PASSWORD: redmine     depends_on:       - redmine-db     restart: always   redmine-db:     image: mariadb     container_name: redmine-db     ports:       - 3306:3306     environment:       MYSQL_ROOT_PASSWORD: redmine       MYSQL_DATABASE: redmine     volumes:       - ./data/db:/var/lib/mysql     command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci     restart: always | 
⚫Redmineのコンテナを起動
※docker-compose.ymlファイルがあるディレクトリ上で実行してください。
| 1 | # docker-compose up -d | 
⚫起動確認
| 1 2 3 | # docker-compose ps redmine      /docker-entrypoint.sh rail ...   Up      0.0.0.0:3000->3000/tcp,:::3000->3000/tcp redmine-db   docker-entrypoint.sh mysql ...   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp | 
起動が確認できれば、Remineコンテナの構築は完了です。
2. GUIでの基本操作
⚫GUI画面への接続とログイン
http://<IPアドレス>:3000に接続し、画面右上の「ログイン」からログインします。
※初期ユーザーは、ID、パスワードともに「admin」です。

⚫プロジェクトの追加
ログイン後、画面左上の「プロジェクト」よりプロジェクトを追加できます。

⚫チケットの追加
チケットを編集するには「管理」画面から以下の2点の設定が必要です
①デフォルト設定のロード
②トラッカー設定
①デフォルト設定のロード(「管理」-「デフォルト設定をロード」)

②トラッカー設定(「管理」-「トラッカー」-各トラッカー設定-プロジェクト名にチェック)

①②を設定後、プロジェクトの「チケット」画面-「新しいチケット」から登録できるようになります。

※その他の基本的な設定方法は
My Redmineご利用マニュアルをご参照ください。
3. プラグインのインストール
Redmineには、拡張機能として100以上のプラグインがあります。
今回は、Mattermost宛にチケット更新などのイベントを通知させる
「Redmine Messenger」をインストールします。
⚫Redmineコンテナに接続し、Redmine Messengerのソースコードをクローン
※必ず/plugin/配下にクローンします。
| 1 2 | # docker exec -it redmine bash # git clone http://github.com/alphanodes/redmine_messenger.git plugins/redmine_messenger | 
⚫bundleで不足しているモジュールとRedmine Messengerをインストール
| 1 2 | # bundle install --without development test # bundle exec rake redmine:plugins:test NAME= redmine_messenger RAILS_ENV=production | 
⚫Redmineを再起動
| 1 | # docker restart redmine | 
⚫Redmineの「管理」-「プラグイン」画面にRedmine Messengerが表示されているか確認

プラグインによっては、インストール後すぐ利用できるものもありますが
今回はMattermotstへの通知を設定するため、
プラグイン名に表示されている「設定」画面へ遷移します。
※Mattermostの内向きウェブフックが必要となりますがこちらの手順は割愛させていただきます。
⚫準備したウェブフックの設定
・メッセンジャーのURL:Mattermostの内向きウェブフックを記載してください
・メッセンジャーのチャンネル:Mattermostのチャンネル名を記載
今回はプロジェクトごとに通知先を変更するため、ここでは空欄にします。
その他の項目は適宜変更してください。

⚫プロジェクトごとに通知先を設定
プラグインインストール後、プロジェクト画面の「設定」タブ配下に
「メッセンジャー」の設定画面が表示されます。
「メッセンジャーのチャンネル」に通知先を設定してください。
※設定していない箇所はデフォルトの設定が引き継がれます。

それでは試しにチケットの進捗率を更新してみます。

無事に指定したチャンネルに通知されました。
今回設定したRedmine Messenger以外にも、
表示のカスタマイズができる「redmine-view-customize」などもおすすめです!
4. Redmineのおすすめ設定
最後に、Redmineのおすすめ設定をご紹介します。
⚫チケットをcsvファイルからインポートする
チケットを全て手動で登録するのは大変ですよね…
担当者や期日、予定工数など、細かく設定しようとするほど…
そこでご紹介したいのが
CSVファイルをインポートしてチケットを一括登録する機能です!
担当者などの設定はもちろんですが、親チケットを指定して登録することもできます!
例として「test」プロジェクトにチケットを登録してみます。
※「#」列の数字は仮のチケット番号です。
 これを記載することで「親チケット」に設定したいチケットの番号を指定することができます。

チケット画面右上の「・・・」-「インポート」からCSVファイルをインポートします。

「チケットのインポート」画面で、登録したい情報を選択します。
「Unique ID」にはCSVファイルで仮のチケット番号を指定している「#」列を設定してください。

インポート完了後、チケット画面に遷移すると以下のようにチケットが登録されています!

プロジェクト管理者の方にはありがたい機能ですよね!
手順の詳細は以下の公式マニュアルをご参照ください。
・RedmineでCSVファイルを読み込んでチケットをインポートする
・RedmineでチケットのCSVインポート時に「親チケット」を設定する
⚫カスタムクエリでチケットの表示条件を設定する
チケットの絞り込み条件を保存する機能です。
この機能を使うことで、チケットのソートができたり、対象のタスクのみ表示させることができます。
何も設定していない状態だと、以下の画像のようにチケットがIDの順番になっています。

これでは少し見づらい気がします…
※チケット一覧に表示させる項目は「管理」-「設定」-「チケットトラッキング」で変更できます。
ここで、画面右側に表示されている「99-チケット画面ソート」のカスタムクエリをクリックしてみます。

「親チケット」>「子チケット」の形で表示されました。
参考までにこのカスタムクエリの設定は以下のようになっております。

こちらの詳細については以下の公式マニュアルをご参照ください。
・チケットの絞り込み条件を保存する(カスタムクエリ)
おわりに
最後まで閲覧頂きありがとうございました。
Dockerがいかに便利な機能か、今回のRemine構築を通して勉強になりました!
また、Redmineを使い始めたことでプロジェクトの稼働状況や各担当者の作業工数などを
視覚的に把握できるようになったので、かなり使えるツールだなと実感しています。
拡張機能も沢山用意されてますので、カスタマイズしながらぜひ使ってみてください!
グローディアのサービスについて
弊社では、ITインフラにおける要件定義や請負対応、さらに派遣も含めた柔軟な対応が可能ですので
ぜひお気軽にお問い合わせください!
グローディアの受託開発・請負構築サービスについてはこちら

