Lychee-Redmineの構築手順
目的:
Ubuntu上のdocker-composeで起動するRedmineにプラグインLycheeを適用してガントチャートなどの機能を使えるようにする
環境:
- Ubuntu 22.04
- Redmine version: 4.2.10.stable
- Ruby version: 2.7.8-p225 (2023-03-30) [x86_64-linux]
- Rails version: 5.2.8.1
参考:
Lychee-Redmineのダウンロード
ダウンロード対象は以下
– https://inquiry.agileware.jp/trial_license?confirmation_token=EQ2wLVLzHdkYxJyFAxfjn8eN
– Linux 64bit版
$ pwd
/tmp
$ ls -l
-rw-rw-r-- 1 admin admin 57281293 12:43 lychee_redmine_linux_amd64.zip
$ cd ~/src/docker-redmine
$ unzip lychee_redmine_linux_amd64.zip
$ cd lychee_redmine_linux_amd64/
$ sudo mv LycheeRedmine/ plugins
上記Lychee関連フォルダを、作成したプロジェクトフォルダに配置する
$ mkdir -p ~/src/docker-redmine/redmine
$ sudo mv plugins/ ~/src/docker-redmine/redmine
$ sudo mv rgloader/ ~/src/docker-redmine/redmine
docker関連ファイル作成
$ cd ~/src/docker-redmine
$ pwd
/home/admin/src/docker-redmine
$ ls -la
合計 44
drwxrwxr-x 5 admin admin 4096 12月 11 17:15 .
drwxr-x--- 25 admin admin 4096 12月 11 17:14 ..
-rw-rw-r-- 1 admin admin 188 2月 20 2023 .editorconfig
-rw-rw-r-- 1 admin admin 68 12月 7 09:41 .env
-rw-rw-r-- 1 admin admin 665 12月 11 17:15 Dockerfile
-rw-rw-r-- 1 admin admin 153 2月 20 2023 README.md
-rw-rw-r-- 1 admin admin 831 12月 11 10:25 docker-compose.yml
drwxrwxr-x 38 admin admin 4096 12月 11 12:58 redmine
$ ls -ltr redmine/
total 12
drwxr-xr-x 2 systemd-coredump systemd-coredump 4096 Nov 16 02:27 rgloader
drwxrwxr-x 40 systemd-coredump systemd-coredump 4096 Dec 19 17:34 plugins
drwxr-xr-x 5 systemd-coredump systemd-coredump 4096 Dec 20 13:33 config
$ ls -ltr redmine/config
total 120
省略
-rw-r--r-- 1 systemd-coredump systemd-coredump 149 Dec 13 10:33 database.yml
-rw-r--r-- 1 systemd-coredump systemd-coredump 9334 Dec 15 13:25 configuration.yml
-rw-r--r-- 1 systemd-coredump systemd-coredump 847 Dec 20 13:31 migre.sh
-rw-r--r-- 1 systemd-coredump systemd-coredump 3866 Dec 21 09:50 application.rb
.editorconfig:
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
.env:
POSTGRES_USER=redmine
POSTGRES_PASSWORD=redmine
POSTGRES_DB=redmine
Dockerfile:
# Dockerfile
# ベースイメージを指定
#FROM redmine:5.0.5 ※コンテナ起動後に依存関係インストールで失敗する(Zeitwerk::nameError)
FROM redmine:4.2.10
# 必要なパッケージをインストール(無い場合ビルドが失敗する)
RUN apt-get update && \
apt-get install -y build-essential && \
rm -rf /var/lib/apt/lists/*
# Redmineのカスタム設定ファイルをコピー ※database.ymlが無いと起動エラー
COPY ./redmine/config/database.yml /usr/src/redmine/config/database.yml #postgres接続情報
COPY ./redmine/config/database.yml /usr/src/redmine/config/configuration.yml #メール通知設定など
COPY ./redmine/config/database.yml /usr/src/redmine/config/application.rb #時刻設定など
COPY ./redmine/config/database.yml /usr/src/redmine/config/migre.sh #マイグレーション用スクリプト
# secret_key_base の生成と設定 ※無いとエラー
RUN echo "production:\n secret_key_base: $(bundle exec rake secret)" > /usr/src/redmine/config/secrets.yml
# その他のカスタム設定や作業があればここに追加
# 必要なライブラリのインストール
WORKDIR /usr/src/redmine
RUN bundle install --without development test
# LycheeRedmineプラグイン用のテーブル作成 ※コンテナ起動後にテーブル作成するため不要
#RUN RAILS_ENV=production bundle exec rake redmine:plugins:migrate
# Redmineインスタンスの再起動 ※CMDにて実施するため不要
#RUN bundle exec rails server -e production
# CMD や ENTRYPOINT などの必要なコマンドもここに追加
CMD ["rails", "server", "-b", "0.0.0.0", "-e", "production"]
docker-compose.yml:
version: '3.9'
services:
redmine:
build:
context: .
dockerfile: Dockerfile # Dockerfile のパスを指定
restart: always
depends_on:
- db
ports:
- 38080:3000
environment:
REDMINE_DB_POSTGRES: db
REDMINE_DB_PORT: 5432
REDMINE_DB_USERNAME: ${POSTGRES_USER}
REDMINE_DB_PASSWORD: ${POSTGRES_PASSWORD}
REDMINE_DB_DATABASE: ${POSTGRES_DB}
volumes:
- redmine:/usr/src/redmine/files
- ./plugins:/usr/src/redmine/plugins
- ./rgloader:/usr/src/redmine/rgloader
- ./redmine/config:/usr/src/redmine/config
db:
image: postgres:15.2
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db:/var/lib/postgresql/data
volumes:
redmine:
db:
config/application.rb
config.time_zone = 'Tokyo' #JSTに変更
config/migre.sh
#!/bin/bash
# Redmineプロジェクトのルートディレクトリに移動
cd /usr/src/redmine
# プラグインのディレクトリ一覧
plugins=(
lychee_saml_auth
lychee_remaining_estimate
lychee_manufacturing
lychee_issues_evm
lychee_issue_set
lychee_issue_datetime
lychee_groups
lychee_custom_field
lychee_cost
lychee_ccpm
lpt
lac
lychee_version_start_date
lychee_status_color
lychee_project_term
lychee_profile_icon
lychee_notification
lychee_issue_spread_sheet
lychee_issue_form
lychee_help
lychee_easy_assigned_user
lrm
lgc_pro
redmine_github_hook
redmine_single_mail
lychee_message_box
alm
※以降のプラグインはエラーの度に個別にマイグレーションしている
lychee_project_report
lychee_kanban
lychee_workdays
lychee_project_dashboard
lychee_project_view
lychee_time_management
lychee_work_plan
)
# 各プラグインに対してマイグレーションを実行
for plugin in "${plugins[@]}"; do
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME="$plugin"
done
コンテナの起動
$ docker-compose up -d
Creating network "docker-redmine_default" with the default driver
Creating docker-redmine_db_1 ... done
Creating docker-redmine_redmine_redmine_1 ... done
dockerログの確認
– ポート3000でサーバがLISTENすること
=> Booting Puma
=> Rails 5.2.8.1 application starting in production
=> Run `rails server -h` for more startup options
W, [2023-12-13T01:37:04.741512 #1] WARN -- : Creating scope :sorted. Overwriting existing method User.sorted.
W, [2023-12-13T01:37:04.744066 #1] WARN -- : Creating scope :sorted. Overwriting existing method Group.sorted.
W, [2023-12-13T01:37:05.694906 #1] WARN -- : Creating scope :system. Overwriting existing method Enumeration.system.
W, [2023-12-13T01:37:07.600213 #1] WARN -- : DEPRECATION WARNING: Using a dynamic :action segment in a route is deprecated and will be removed in Rails 6.0. (called from instance_eval at /usr/src/redmine/config/routes.rb:395)
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 2.7.8-p225) ("Birdie's Version")
* Min threads: 0
* Max threads: 5
* Environment: production
* PID: 1
* Listening on http://0.0.0.0:3000
Use Ctrl-C to stop
GUIでの正常性確認
– 以下のURLにアクセスする
– http://192.168.9.10:38080
– adminユーザでログインする
![1_LoginPage.png](/attachment/6576cef17a8991006b88280f)
– 初期パスワードを変更する
![2_PasswordChangePage.png](/attachment/6576cf277a8991006b882811)
マイグレーションによるテーブル作成
– redmineコンテナに入り、マイグレーションによるテーブル作成を行う
$ docker ps | grep redmine
47c1f0551802 docker-redmine_redmine "/docker-entrypoint.…" 21 hours ago Up 16 hours 0.0.0.0:38080->3000/tcp, :::38080->3000/tcp docker-redmine_redmine_1
67e2b2e18497 postgres:15.2 "docker-entrypoint.s…" 21 hours ago Up 21 hours 5432/tcp docker-redmine_db_1
$ docker exec -it docker-redmine_redmine_1 bash
# pwd
/usr/src/redmine
# RAILS_ENV=production bundle exec rake redmine:plugins:migrate
※↑のマイグレーションだけでは、プラグイン全てがマイグレーションされないため、マイグレーション用スクリプトを実行する
# bash config/migrate.sh
個別のマイグレーション方法
– 下記のプラグインを例にマイグレーション方法を記述する
- テーブル名:lychee_project_view
- リレーション名:lpv_project_favorites
– GUI操作でredmineコンテナからエラーが発生した場合を想定する。エラーにはリレーション名しか表示されないので、実際のプラグイン名(テーブル名)を特定する必要がある
F, [2023-12-20T06:21:01.869155 #1] FATAL -- : ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "lpv_project_favorites" does not exist
LINE 8: WHERE a.attrelid = '"lpv_project_favorites"':...
– plugins配下を検索して、テーブル名を見つける。lychee_project_viewがテーブル名だと判明。
# pwd
/usr/src/redmine/plugins
# find ./ -name *lpv_project_favorites*
./lychee_project_view/db/migrate/001_create_lpv_project_favorites.rb
– テーブル名を指定して、マイグレーション実行
# RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME="lychee_project_view"
– dbコンテナに入り、redmineデータベースの中にテーブルが作成されていることを確認する
# psql -U redmine -d redmine
redmine=# \dt;
:
public | lpv_project_favorites | table | redmine
:
(147 rows)
redmineコンテナ再起動
– redmineコンテナ再起動してGUIに反映させる
$ docker restart docker-redmine_redmine_1
docker-redmine_redmine_1
GUIでの正常性確認
– プラグインリストの確認 ※要修正
– Lycheeプラグインがインストールされていること(38個)
![3_Plugin-List](/attachment/6576cfc87a8991006b882812)
– ガントチャート機能が表示されること
![4_GuntChart.png](/attachment/6576d4677a8991006b88285b)