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
DXO株式会社

DXO株式会社

〒103-0014
東京都中央区日本橋蛎殻町2-13-6
EDGE水天宮8F
E-Mail : contact-info@dxo.co.jp
URL : https://dxo.co.jp