プロジェクト

全般

プロフィール

20260702 サーバ移行04 RedmineのDocker化 » 履歴 » リビジョン 2

リビジョン 1 (sylow castle, 2026/07/02 15:13) → リビジョン 2/3 (sylow castle, 2026/07/02 15:17)

# 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 <User>@<Host>;@で出た結果を新環境で実行してあげて終わり。 

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

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

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