以前に作成したdocker-redmine-orchestrationというDocker composeで作ったRedmine向けの環境なんですが、Redmine3.4.2へ対応するついでにいろいろ弄りました。

変更点とか


ディレクトリの命名がビミョーだったりして、以前からその辺が気になっていました。全部で下記のような変更を行いました。

  • Redmine 3.4.1および3.4.2へのバージョンアップ
  • ソースコードダウンロード用のシェルスクリプトの修正
  • 不要なgemファイルのインストール処理を削除
  • ディレクトリの見直し
  • ベースイメージにRuby 2.4.1を使用
  • MariaDBをバージョンアップ
  • nginxをバージョンアップ

ざっとこんな感じです。併せて検証が足りていなかったところも都度イメージとDBの削除を繰り返して再作成して確認しました。イメージのサイズとかビルドの速度も改善されてます。

また、どの時点のコードがRedmineのどのバージョンに対応しているかわからない状態だったので、タグを打ってキッチリとリリース版も作成してReleaseのところからzipでダウンロードできるようにしました。

やりたいと思ってるところ


  • Redmineのイメージだけ別リポジトリに分離してDocker Hubにpush
  • Redmineのソースコードそのものをホスト側からマウント

やりたい理由ですが、まず、一つ目のRedmineのイメージだけ分離についてです。DBは別のものを使用したいというケースもあると思います。ですが、現状だと起動スクリプト等でMariaDBのコンテナとRedmineのコンテナは切り離せない状態になっており、この辺を解消したいというのがあります。最も大きい理由はのはRedmineのコンテナのビルドを短縮したいというもので、現状はビルドに4~5分くらいかかるってます。これって環境を潰して作ってを繰り返して検証するには結構イライラします。こいつをあらかじめDocker Hubにpushしておけば構築が結構速くなるのではないかというものです。また、AlpineLinuxのパッケージがたまに古くなって使えなくなったりすることもあるので、それも避けたいという思いがあります。
ただ、これをやってしまうとRedmineのソースコードを直接いじるのが難しくなってしまいます。今はビルド前にソースコードを変更しておけば変更したコードでイメージを作成できるのでどうしようかな…と。ちなみに、DBはRedmineのコンテナと結びついてしまっていますが、nginxはdocker-composeのnginxを消してRedmineコンテナのポートを開ければ、現状でも別のWebサーバを使用することは可能です。

二つ目ですが、Redmineのコードを直接変更した場合に、都度ビルドするのは結構めんどくさいです。ですので、Redmineのソースコードそのものをホスト側からマウントできるようにしたいな…。という思いがあります。

上記の両方は共存できないので、どちらか片方はどこかのタイミングでやりたいと思います。