RedmineのURLパスを変更する

nginxなどで複数のコンテナをURLパスで振り分けたい時ってありますよね?そうした時に、redmineをdockerで起動すると大体パスが / になってて他のアプリと被っちゃうので /redmine とかにしたいわけです。以下に実際にやってみたのでご参考まで。

ポイントは以下、

  • /usr/src/redmine/config.ru に設定追加
  • /usr/src/redmine/config/environment.rb に設定追加
  • docker-compose.yml の環境設定にROOTのパスを追加
  • 「管理」ー「設定」ー「一般」のホスト名とパスの編集

では、以下の環境で設定していきます。

$ mkdir -p ~/work/redmine/redmine
$ cd ~/work/redmine/redmine/
$ mkdir config files log plugins themes
$ mkdir -p ~/work/redmine/postgres/
$ vi docker-compose.yml
---
services:
    # Redmine本体
    redmine:
        image: redmine:latest
        container_name: redmine
        ports:
            - '8004:3000'
        expose:
            - '3000'
        volumes:
            - ./redmine/config.ru:/usr/src/redmine/config.ru
            - ./redmine/config:/usr/src/redmine/config
            - ./redmine/files:/usr/src/redmine/files
            - ./redmine/log:/usr/src/redmine/log
            - ./redmine/plugins:/usr/src/redmine/plugins
            - ./redmine/public/themes:/usr/src/redmine/public/themes
        restart: always
        environment:
            REDMINE_DB_POSTGRES: postgres
            REDMINE_DB_DATABASE: redmine
            REDMINE_DB_USERNAME: redmine
            REDMINE_DB_PASSWORD: redmine
            RAILS_RELATIVE_URL_ROOT: '/redmine'
            TZ: Asia/Tokyo
        links:
            - postgres

    # DBサーバ
    postgres:
        image: postgres:latest
        container_name: postgres_redmine
        volumes:
            - ./postgres/db-data:/var/lib/postgresql/data
            - ./postgres/initdb:/docker-entrypoint-initdb.d
        restart: always
        environment:
            POSTGRES_ROOT_PASSWORD: postgres
            POSTGRES_USER: redmine
            POSTGRES_PASSWORD: redmine
            POSTGRES_DATABASE: redmine
            TZ: Asia/Tokyo

volumes:
    redmine:
    postgres:
---

$ docker-compose up -d
$ cd ~/work/redmine/redmine/
$ docker cp redmine:/usr/src/redmine/config.ru ./
$ docker cp redmine:/usr/src/redmine/config/environment.rb ./config/
$ vi ./config.ru
---add
map ActionController::Base.config.relative_url_root||"/redmine" do
  run Rails.application
end
---
$
$ vi ./config/environment.rb
---add
# Set the relative URL root
Rails.application.config.action_controller.relative_url_root="/redmine"
---
$ cd ~/work/redmine/
$ docker-compose stop
$ docker-compose rm
$ docker-compose up -d

proxyとしてnginxを被せておきます。私はnginxはdockerではなくOS(buntu 24.04.2 LTS)側にインストールしたものを使ってますが、結局設定するのは、sites-enabledに以下のような設定をするだけなのでdockerでも大丈夫です。

$ cd /etc/nginx/sites-enabled
$ sudo vi default
---
server {
        listen  80;
        server_name localhost;

        location /redmine/ {
                proxy_set_header Host $http_host;
                proxy_pass http://localhost:8004/redmine/;
        }
        
        location /  {
                root /usr/share/ngix/html;
                index index.html index.htm;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/ngixn/html;
        }
}
---
$
$ sudo service nginx restart

上記の設定が終わりログインできるようになったら、以下の変更をしておきます。


投稿日

カテゴリー:

投稿者: