前提
導入対象とするマシンは下記の通り。
- Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB
- ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685)
- 仮想 OS : Ubuntu 20.04 LTS on WSL2
Bitnami/Redmine + MariaDB 導入
インストール手順 & 実行手順
Docker Hub での Bitnami/Redmine の解説の通り。Docker Compose での提供であるため、起動は簡単。
# install docker pull bitnami/redmine # execute docker-compose up -d
初期設定状況と docker-compose.yml
初期設定は下記のとおり。docker-compose.yml の環境変数設定に追記することで変更可能 (だが、ユーザ関連情報は平文保存になってしまうため docker-compose.yml には書かない)。
初期ユーザ | user | 初回起動・ログイン直後に変更する |
初期パスワード | bitnami1 | 初回起動・ログイン直後に変更する |
初期メールアドレス | user@example.com | |
初期言語 | en | 初回ログイン前に ja にしておくのが無難 |
設計戦略 のところで述べたように、サーバサービスやシステム設定を格納するディレクトリ構造はコンテナとデータボリュームの間で分割せず一体とした方がバックアップ&リストア等の管理をしやすい。というわけで docker-compose.yml を下記のように編集しておく。
version: '2' services: mariadb: image: 'docker.io/bitnami/mariadb:10.3-debian-10' restart: always # 常に再起動するように設定しておく environment: - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_redmine - MARIADB_DATABASE=bitnami_redmine volumes: - 'mariadb_data:/bitnami' redmine: image: 'docker.io/bitnami/redmine:4-debian-10' # image: 'docker.io/bitnami/redmine:4-debian-10-XXX' # スナップショットをとった場合はイメージを切り替える restart: always # 常に再起動するように設定しておく environment: - REDMINE_DB_USERNAME=bn_redmine - REDMINE_DB_NAME=bitnami_redmine - REDMINE_LANGUAGE=ja # 日本語に設定しておく ports: - 'XXXX:3000' # Port を変更しておく volumes: # - 'redmine_data:/bitnami' # データボリュームは使わない (システム設定情報の分断を回避するため) - '/mnt/.... /redmine_plugins:/redmine_plugins' # 外部ディスク格納のプラグインパッケージをインストール # する場合は参照先をマウントする depends_on: - mariadb volumes: mariadb_data: driver: local # redmine_data: # データボリュームは使わない # driver: local
Redmine のカスタマイズ
本メモを記述する理由はインストール/実行手順の記録ではなく、むしろこちら。
カスタマイズした Redmine の挙動を確認する上で Docker コンテナをサンドボックスとして使い倒す。その際の操作・設定手順を記録することにある。 コンテナ内部の構成が Windows 版 Bitnami Redmine と少々異なるため、また、コンテナにエディタや日本語フォント等がないことをちょっとした工夫で凌ぐため、メモしておくことが重要。
Redmine 標準項目名の編集
日本語の標準項目名は /opt/bitnami/redmine/conf/locales/ja.yml
に定義されている。これを (エディタなしで) 編集して挙動確認してみる。
テストケースとして assigned_to (日本語名:"担当者") 項目を "SendTo" にしてみる。 類似項目に assigned_to_role というものがあるため、これを比較対象として編集が exact になされたかを確認する。
# ディレクトリ移動 cd /opt/bitnami/redmine/conf/locales # ファイルのバックアップ cp ja.yml ja.yml.bak # ファイルの編集 cat ja.yml.bak | awk '{ sub(/field_assigned_to:.*/, "field_assigned_to: SendTo"); print }' > ja.yml # 確認 cat ja.yml | grep field_assigned_to
編集後に docker-compose restart
としてコンテナを立ち上げ直し、Redmine サービスが起動すれば、項目名が変更になっている。他の項目を含めて、あるべき項目を壊したりしてしまうとサービスが起動しなくなる。
docker-compose down
→ docker-compose up -d
とするとコンテナを捨てて作り直すため、この設定は無かったことになる。しかし、プロジェクトやチケットの状況は MariaDB (のマウント先 = データボリューム) に保存されているため、無くならない。
プラグイン・インストールの事前準備
bitnami/redmine はお手頃なのだが、プラグイン・インストールの事前準備に大変手間がかかった *1 ため、ここに記録する。
必要なパッケージ
パッケージ | インストール方法 | 補足 |
---|---|---|
gcc pkg-config | apt install | ビルド用 |
build-essential curl file git | apt install | brew の依存パッケージ |
libmariadbd-dev | apt install | mysql2 (mariadb) の依存パッケージ (mysql の依存する今は亡き libmysqld-dev の mariadb 版) |
brew | curl でバッチのダウンロード&実行 | apt ではないパッケージ管理コマンド (Mac OS 由来) nokogiri が apt でまともにインストールできないため必要 |
libxml2 libxslt | brew install | nokogiri (Ruby 用 XML/HTML 用パーサ) の依存パッケージ |
bundler | gem install | gem 管理コマンド |
rake | gem install | Ruby on Rails ビルドツール (要バージョン 13.0.1) |
事前準備手順
事前準備の手順は下記のとおり *2。
ディレクトリ移動
cd /opt/bitnami/redmine/
apt install によるパッケージ導入
docker コンテナ内では sudo
不要で下記のとおり進める。
apt update && apt upgrade apt install gcc apt install pkg-config apt install build-essential curl file git apt install libmariadbd-dev
brew のインストール
Ubuntu でのインストールパスは linuxbrew であるが、ダウンロード元は linuxbrew という名称が消え、本家 (Mac OS 用) の Homebrew と統合されたらしい *3。
brew は root でインストールできない。curl で取り寄せたスクリプトの実行にはかなり時間がかかり、途中でエラー停止したように見えるところがあるが、辛抱強く待つ。
# change user (brew does not allow to be installed by root) su bitnami # download and execute script /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" # return to root exit # set path export PATH='/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin':"$PATH" # confirm brew brew doctor
nokogiri 依存パッケージのインストール
brew install libxml2 libxslt
bundler と rake のインストールと設定
各 gem が要求する rake のバージョンが /opt/bitnami/redmine/Gemfile.lock
に記載されているため、制約にかからないバージョン *4 をインストールし、設定する。また bundle install
の --no-deployment
が廃止予定で使えないため、代わりの設定をする。
# install ruby on rails administrative tools gem install bundler gem install rake --version 13.0.1 # confirm available versions of rake gem list rake # set rake version to use rake _13.0.1_ routes
bundle install による gem インストール
bundle install
はこのディレクトリで実行しなければならないようだ。
# set configuration preliminarily, instead of using depreciated option '--no-deployment' bundle config set --local deployment 'false' # all I want to do is ... cd /opt/bitnami/redmine/ bundle install ### preserve a docker snapshot, here ###
この節でやりたかった本質は bundle install
の 1 コマンド。いままでやってきたのは、このコマンドが通らないための事前準備の事前準備。ふぅ。
プラグインのインストール方法
プラグインのインストール
bundle exec
もこのディレクトリで実行しなければならないようだ。
# download plugin package (sample) cd /opt/bitnami/redmine/plugins git clone https://github.com/onozaty/redmine-view-customize.git view_customize # gem install cd /opt/bitnami/redmine/ bundle config set --local deployment 'false' bundle install # package install bundle exec rake redmine:plugins:migrate RAILS_ENV=production
redmine の再起動
アプリごとの再起動方法を覚えるのが面倒なため、docker から再起動してしまう。
docker-compose restart
参考記事
- Docker Hub - bitnami/redmine
- bitnami でインストールした Redmine を Docker に移設した - Qiita
- Redmineのチケット作成画面で項目名を変更する(View customize plugin) - Enjoy*Study
- Bitname-Redmine docker コンテイナーでプラグ・インを設置する過程。 - Qiita
- bitnami redmineにpluginを追加する - Qiita
- nokogiri を嫌いにならないで 〜インストール時のエラーを乗り越えろ〜 - Qiita
- LinuxbrewでUbuntu18.04のパッケージ管理 - Qiita
- 【Tips】Ubuntuへのmysql2 gemインストール時に発生しうるエラーへの対処 - Qiita
- pgがインストールできない - Qiita
- Ruby + Nokogiriでスクレイピング - Qiita
- Rubyのgemコマンドの使い方を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン