概要
Docker Hubのlibrary/redmineをテーマが使えるように変更します.また,複数エンドポイントで利用するため,サブディレクトリで動作させます.
ベースのイメージはlibrary/redmine:3.4.4を利用し,新しくイメージを作成することで対応します.
テーマを適用する
まず,はじめにテーマを適用しましょう.redmineのテーマはredmineのディレクトリ内にあるpublic/themes
にテーマのディレクトリを配置することで認識されます.テーマはminimalflat2を利用させていただきましょう.
Dockerfileで実行する内容としてはこんな感じになります.
- unzipがないので入れる
- テーマをダウンロードする
-
public/themes
ディレクトリを作成する - テーマを解凍して移動する
- 後始末
redmine:3.4.4
はdebianベースなのでaptを使ってunzipを入れています.
FROM redmine:3.4.4
RUN apt-get update \
&& apt-get install -y --no-install-recommends unzip \
&& rm -rf /var/lib/apt/lists/* \
&& wget -O minimalflat2.zip "https://github.com/akabekobeko/redmine-theme-minimalflat2/releases/download/v1.3.4/minimalflat2-1.3.4.zip" \
&& unzip minimalflat2.zip \
&& mkdir -p public/themes \
&& cp -r ./minimalflat2 ./public/themes \
&& rm -rf minimalflat2.zip \
&& rm -rf minimalflat2
サブディレクトリで動かす
サブディレクトリで動かす方法は公式Wikiにある方法でやります.サブディレクトリは/redmine3
としていますが,仕様に応じて変更してください.2行目はRails.application.initialize!
よりも前に挿入しなければならないのでsedで挿入しています.これでRailsのルーティングがサブディレクトリに移ります.そして3行目はRails.application.initialize!
の後ろでないと名前解決ができないのでファイル末尾に追記しています.これで静的アセットがサブディレクトリでアクセスできるようになりますが,実際にpublic
ディレクトリ内でアクセス出来ないとエラーになるので,4行目でシンボリックリンクを貼ります.
FROM redmine:3.4.4
RUN sed -i -e "$ i RedmineApp::Application.routes.default_scope = \"/redmine3\"" config/environment.rb
RUN echo "Redmine::Utils::relative_url_root = \"/redmine3\"" >> config/environment.rb
RUN ln -sf ${PWD}/public ${PWD}/public/redmine3
最後に
美しい.
一応テーマがGPLなので完全版のDockerfileを上げておきます(この対応でいいかわからないので違反していたら教えてください).
FROM redmine:3.4.4
RUN sed -i -e "$ i RedmineApp::Application.routes.default_scope = \"/redmine3\"" config/environment.rb
RUN echo "Redmine::Utils::relative_url_root = \"/redmine3\"" >> config/environment.rb
RUN ln -sf ${PWD}/public ${PWD}/public/redmine3
RUN apt-get update \
&& apt-get install -y --no-install-recommends unzip \
&& rm -rf /var/lib/apt/lists/* \
&& wget -O minimalflat2.zip "https://github.com/akabekobeko/redmine-theme-minimalflat2/releases/download/v1.3.4/minimalflat2-1.3.4.zip" \
&& unzip minimalflat2.zip \
&& mkdir -p public/themes \
&& cp -r ./minimalflat2 ./public/themes \
&& rm -rf minimalflat2.zip \
&& rm -rf minimalflat2