サブディレクトリの設定

参考:Ubuntu18.04 Redmine導入メモ Dokcer編 | ろっひー

前提

Redmine コンテナが動作していること

http://<ホスト名>:<ポート番号> にアクセスすると、Redmineのホーム画面にアクセスできること

ファイルのコピー

公式のRedmineイメージからコンテナを作成した場合、デフォルトではvimがインストールされていない。

そのため、コンテナからファイルをローカルにコピーし、編集後にコンテナ内のファイルを上書きする方針で行う。

$ sudo docker cp <Redmineコンテナ名>:/usr/src/redmine/config.ru .
$ sudo docker cp <Redmineコンテナ名>:/usr/src/redmine/config/environment.rb .
設定ファイルの編集

下記では、サブディレクトリを「redmine」に指定したい場合を示す。

$ vi config.ru

require ::File.expand_path('../config/environment',  __FILE__)
run Rails.application
↓
require ::File.expand_path('../config/environment',  __FILE__)
#run Rails.application
map ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do
  run Rails.application
end
$ vi environment.rb

末尾に追記する
ActionController::Base.relative_url_root = RedmineApp::Application.routes.default_scope
Redmine::Utils::relative_url_root = RedmineApp::Application.routes.default_scope

ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"
Redmine::Utils::relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT']
設定の上書き
$ sudo docker cp config.ru <Redmineのコンテナ名>:/usr/src/redmine
$ sudo docker cp environment.rb <Redmineのコンテナ名>:/usr/src/redmine/config
$ sudo docker-compose restart <Redmineのコンテナ名>

これで、「http://<ホスト名>:<ポート番号>/redmine」にアクセスできるようになる。

Apacheでのプロキシ設定

ポート番号の指定をしないで済むようにリバースプロキシを設定する。

Dockerを動作させているホストにおいて、下記のファイルを編集する。

下記の設定は「/redmine」にアクセスすると、「:<ポート番号>/redmine」にルーティングされる設定となる。

$ sudo vi /etc/httpd/conf/httpd.conf

末尾に下記を追記する。
ProxyRequests off
ProxyPass /redmine http://localhost:<ポート番号>/redmine/
ProxyPassReverse /redmine http://localhost:<ポート番号>/redmine/

編集後、httpdサービスを再起動する。

$ sudo systemctl restart httpd

再起動後、「http://<ホスト名>/redmine」にアクセスできることを確認する。