プロジェクト

全般

プロフィール

操作

20260702 サーバ移行04 RedmineのDocker化

このご時世にredmine 3.4.4 stableをdocker化
負けたとこだけメモっとく

redmine環境

Before

  • CentOS 7
  • redmine 3.4.4stable
  • MySQL 5.7
  • Ruby 2.4.3
  • Rails 4.2.8

After(暫定)

  • Alma Linux 9
  • redmine 3.4.4-passenger(dockerコンテナ)
  • MySQL 8.0
  • Ruby 2.4.4
  • Rails 4.2.8

生で動いていたのをdockerに乗せたのが第一段階の肝。
今後さらにredmineコンテナのバージョン上げて行く予定。

MySQL

MySQL5.7から8.0への移行。
普通にインストールしてユーザーは
@show create user;@と@show grants for @;@で出た結果を新環境で実行してあげて終わり。

SELinux

redmineにはredmine/filesディレクトリというアップロードファイルを保存するディレクトリがある。
ファイルの移行はこれをもってこなきゃダメ。

コンテナ化の際はdocker-composeでボリュームを/usr/src/redmine/filesにマウントしてあげる
例えばこんな感じ:

docker-compose.yml

    volumes:
      # ホストの /var/lib/redmine/files をコンテナの files ディレクトリにマウント
      - /var/lib/redmine/files:/usr/src/redmine/files

で、SELinuxが動いているとコンテナ内から/var/lib/redmine/filesにアクセスできなかったので一敗。
@setenforce 0@で動いたのでSELinuxが原因と確認

対処方法

# semanage fcontext -a -t container_file_t "/var/lib/redmine/files(/.*)?"
# semanage restorecon -Rv /var/lib/redmine/files/

サブディレクトリ運用

/redmine以下で運用しているのが鬼門になった。
/redmine以下をリバースプロキシしてあげたとき
CSSは/redmine/stylesheetsフォルダを見に行くのに
トップページに表示される「ログイン」のリンクなんかが/redmine/loginじゃなくて/loginになるという事象が発生。
最終的にredmine(コンテナ内)のconfig.ruを直接編集して無理無理動かした。

Nginx

        location ^~ /redmine/ {
          proxy_pass http://127.0.0.1:3000;

こんな感じになる。proxy_passに入れていた末尾/は削除されました。
Before:

#/usr/src/redmine# cat config.ru
# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)
run RedmineApp::Application

After:

#/usr/src/redmine# cat config.ru
# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)

map "/redmine" do
  run RedmineApp::Application
end

一応これでリンクは直ったんだけどログインすると今度は422エラーという症状、CookieのPathが/redmine/redmineになっていたのが原因。
それはNginxで入れていた

          proxy_cookie_path / /redmine/;

という設定をコメントアウトしてクッキー削除して食わせなおしたりしてあげたら直った。

GeminiとChat GPTを動員してバグ取り。Geminiは混雑してて途中でリタイアした。
nginxrの設定やedmineやRailsの設定をあちこち見た後究極的には
「/redmineをハードコードして無理やり動かせない?」
で上記の提案を貰って終了。(紆余曲折は省略する)なんかRackとかRailsのmiddleware周りっぽいというところだけ。
ChatGPTと共に何敗したか思い出せぬ

とりあえずChatGPTからの金言:
「お前まさかredmine 3.4.4から6.1へのアップグレード一気にやろうなんて思ってないよな?」
だそうです。

sylow castle さんが約2ヶ月前に更新 · 3件の履歴