DockerでRedmineを気軽に管理しよう!


docker_redmine

こんにちは!システムエンジニアのリョータです。

社内ではプロジェクト管理にRedmineを利用しています。
Redmineのインストールには、Ruby/Passengerのインストールや沢山の設定が必要でかなり面倒です。
バージョンアップの作業もなかなかやらないこともしばしば。

そういった面倒を解消し、プラグイン追加やバージョンアップを気軽に行うため、Docker上に構築しています。

その構築手順をまとめてみました。
Dockerで管理するときの参考にしてください!


環境

この記事は、以下の環境で確認しています。

  • CentOS 7.3
  • Docker 1.10.3
  • sameersbn/redmine:3.3.1
  • sameersbn/mysql:latest (MySQL 5.5)

※CentOS 6ですとDockerは1.8以上はサポート外のようです。ご注意を。



手順


ネットワークの設定や各パッケージのインストールの詳細は省略します。
CentOSならDockerはyumで簡単ですね。
※私はyumと打つたびセサミストリートのクッキーモンスターが頭をよぎるのですが、同じ人いますかね?

yum install docker
# yumyum

1.イメージを取得

まずは、Dockerのイメージを取得します。
ダウンロードで少し時間がかかります。

docker pull sameersbn/redmine:3.3.1
docker pull sameersbn/mysql:latest

2.データストアを作成

Dockerのコンテナとフォルダを共有するデータストアを作成します。

mkdir -p /srv/docker/redmine/mysql
mkdir -p /srv/docker/redmine/redmine

SELinuxを使っている場合は、コンテナからアクセスできるようファイルのタイプを変更しておきます。
chcon -Rt svirt_sandbox_file_t /srv/docker/redmine/mysql
chcon -Rt svirt_sandbox_file_t /srv/docker/redmine/redmine

3.コンテナの作成と起動

さて、もうコンテナを作成して起動です。

まずは、MySQLから。
ユーザ名[DB_USER]やパスワード[DB_PASS]の値は、適宜修正してください。

docker run --name=mysql-redmine -d --env='DB_NAME=redmine_production' --env='DB_USER=redmine' --env='DB_PASS=redpass' -v /srv/docker/redmine/mysql:/var/lib/mysql sameersbn/mysql:latest

そして、Redmineのコンテナの作成と起動。(80ポートで起動しています。)
docker run --name=redmine -d -p 80:80 --link=mysql-redmine:mysql -v /srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.3.1
# yummy!
※起動に数分かかります。

Redmineの構築が完了しました!

解説

Redmineの起動コマンドについて解説します。

linkオプションでデータベースの接続情報がリンクされ、データベースのタイプ[DB_ADAPTER]・ホスト名(IPアドレス)[DB_HOST]・ポート番号[DB_PORT]・データベース名[DB_NAME]・ユーザ名[DB_USER]・パスワード[DB_PASS]が連携されて自動的に接続できます。
volume(v)オプションはデータストアのリンクです。Docker上で保存したファイルにホストからアクセスできます。

なお、httpの起動ポートを変更したい場合は、publish(p)オプションの左の値を変更してください。

例)8080ポートでの起動
docker run --name=redmine -d -p 8080:80 --link=mysql-redmine:mysql -v /srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.3.1

※起動に失敗する場合は、docker rmでコンテナを消して、データストア作成からやり直すとうまくいくかもしれません。

4.初期設定

あとはRedmineの初期設定に沿って設定してください。
http://redmine.jp/tech_note/first-step/admin/

お疲れ様でした。

メンテナンス

あまりにも早くできてしまったので、メンテナンスなどについて。

Dockerコマンドチートシート

まずはコマンドのチートシート。

Redmineだけ書いてますが、MySQLも同様です。
名前を起動時に設定したmysql-redmineにしてあげてください。

Redmineを一時的に止める場合
docker stop redmine

Redmineを再開する場合
docker start redmine
※しっかり起動するまで数分かかります。

Redmineを再起動する場合
docker restart redmine

Redmineのコンテナにログイン
docker exec -it redmine bash

Redmineのコンテナの削除
docker rm redmine

MySQL

MySQLへのログイン
docker exec -it mysql-redmine mysql -uroot

ダンプの取得
docker exec -it mysql-redmine mysqldump -uroot redmine_production -v -r /var/lib/mysql/redmine.dmp
/srv/docker/redmine/mysql/redmine.dmp ができています。
mysqldumpのオプションはmysqldumpの使い方 オプション編mysqldumpの使い方 バックアップ&リストア編 基本の章で確認してくださいね。

プラグインの追加(テーマも同様)

プラグインは、ホストのpluginフォルダに追加して、Redmineを再起動すればOK。

cd /srv/docker/redmine/redmine/plugin/
# 好きなpluginを設置
# git clone [plugin] などなど

docker restart redmine

Redmineのアップグレード

最新のイメージを取得して、Dockerのコンテナを止めて削除。
その後、新しいRedmineを起動する。

docker pull sameersbn/redmine:3.3.1

docker stop redmine
docker rm redmine

docker run --name=redmine -d -p 80:80 --link=mysql-redmine:mysql -v /srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.3.1

コンテナを削除するのが嫌な場合は、新しいRedmineに別名を付けて起動する。
※アップグレードでDBが変わる可能性もあるので、DBバックアップも忘れずに
docker pull sameersbn/redmine:3.3.1

docker stop redmine

docker run --name=redmine3.3.1 -d -p 80:80 --link=mysql-redmine:mysql -v /srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.3.1

おわりに

DockerでのRedmine構築はすごく簡単で、管理も非常に便利です。

これにdocker-composeも組み合わせられますし、docker-redmineでバックアップを取る方法もあります。
https://github.com/sameersbn/docker-redmine#creating-backups

せっかくのDockerなのでいろいろ試してみたいですね!

今回利用したDockerfile

https://github.com/sameersbn/docker-redmine
https://github.com/sameersbn/docker-mysql

株式会社ライズウィル

株式会社ライズウィル

〒110-0016
東京都台東区台東1-27-11 やわらぎビル2F
TEL : 03-4590-3200
FAX : 03-4590-3201
E-Mail : info@risewill.co.jp
URL : http://www.risewill.co.jp

海上コンテナ輸送管理システム「海コン魂!」
海コン魂!
面接予約・スタッフ管理システム「WebWORKS.」
WebWORKS.