Redmine

Ubuntu上にdocker-composeでLychee-Redmineを構築する

2023年12月11日



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

参考:

https://support.lychee-redmine.jp/%e8%a9%95%e4%be%a1%e7%89%88%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/

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)

CATEGORIES & TAGS

Redmine,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。