Dockerを使ったRedmine環境の構築
概要
Redmineの公式Dockerイメージと、MySQLの公式Dockerイメージを使用して、Hyper-vに立てたAlpine上にRedmine環境を構築した時のメモです。
仕事でRedmineを使うことが多く、自分が好きにいじれる環境が欲しかったのと、DockerやDocker-composeの勉強もしたかったので、試しに作ってみました。
成果物
今回作成した成果物をGithubで公開しています。
参考サイト
下記のサイトを参考にしました、感謝。
Redmineの構築に関して
- Redmine公式DockerHub
- MySQL公式DockerHub
- 先人たちのサイト
Redmineのプラグインに関して
- kanbanプラグイン
- A1テーマ
Docker Redmineの構成
構成情報
- ホストPC: Alpine Standard 3.18.5 (Hyper-V上で稼働)
追加でインストールしたパッケージは次の通り- git
- docker
- docker-compose
- Redmineイメージ: redmine:5.1.1-alpine3.18
- MySQLイメージ: mysql:5.7
- Redmineのテーマ: RedmineUP A1
- Redmineのプラグイン: happy-se-life/kanban
docker-compose.ymlの内容
今回作成した docker-compose.yml は下記のものになります。
1 | version: '3.8' |
なるべく少ないハードウェアリソースで動作してほしかったので、ホストもRedmineコンテナもAlpineにしました。
実際に軽量で動いてくれているのかはよくわかりませんが、2コア、2GBメモリーで動いているので問題なしとしています。
文字コードはutf8mb4を指定しないと、日本語でエラーが出たので設定しました。
environment 周りはデフォルトと同じ値をセットしている部分もあり、省略できるのですが、何を設定したのか忘れそうだったので書きました。
プラグインとテーマのインストール手順
GithubのREADMEには書かなかったのですが、プラグインとテーマのインストール手順を記録しておきます。
kanbanプラグインのインストール手順
- 通常ユーザーにはDockerのVolume領域の権限が無いので、Super Userになっておきます。
- Redmine の Plugins フォルダに移動します。
1
# cd /var/lib/docker/volumes/redmine-plugins/_data
- kanban プラグインをクローンします。 git をインストールしてない場合は、zipでダウンロードしてunzipしてください。
1
# git clone https://github.com/happy-se-life/kanban.git
1
2
3# wget https://codeload.github.com/happy-se-life/kanban/zip/refs/heads/master -O kanban.zip
# unzip kanban.zip
# mv kanban-master /var/lib/docker/volumes/redmine-plugins/_data/kanban - Redmine をリスタートします。
1
docker-compose restart
A1テーマのインストール手順
- RedmineUPのサイトから無料ダウンロードします。
- https://www.redmineup.com/pages/ja/themes/a1
アカウント登録してダウンロードリンクをメールで受け取ります。
- https://www.redmineup.com/pages/ja/themes/a1
- scp などでホストのAlpineへ転送します。
- Redmine の Theme フォルダへコピーします。
1
cp -r a1 /var/lib/docker/volumes/redmine-themes/_data
- Redmine をリスタートします。 プラグインと違って、テーマはRedmineを再起動しなくても読み込まれる模様ですが、
1
docker-compose restart
あまりよくわかっていません・・・。
やり残したこと
いくつかやりたいことがあるので、そのうち続きを書こうと思います。
- RedmineのHTTPS対応
- 自動バックアップ
- バックアップからのリストア
- Redmineのバージョンアップ
- MySQLのバージョンアップ
- Redmineのトラッカーやカスタムフィールドやステータス設定をコード化