プロジェクト

全般

プロフィール

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

sylow castle, 2026/07/02 15:17

1 1 sylow castle
# 20260702 サーバ移行04 RedmineのDocker化
2
3
このご時世にredmine 3.4.4 stableをdocker化
4
負けたとこだけメモっとく
5
6
## redmine環境
7
8
### Before
9
10
- CentOS 7
11
- redmine 3.4.4stable
12
- MySQL 5.7
13
- Ruby 2.4.3
14
- Rails 4.2.8
15
16
### After(暫定)
17
18
- Alma Linux 9
19
- redmine 3.4.4-passenger(dockerコンテナ)
20
- MySQL 8.0
21
- Ruby 2.4.4
22
- Rails 4.2.8
23
24
生で動いていたのをdockerに乗せたのが第一段階の肝。
25
今後さらにredmineコンテナのバージョン上げて行く予定。
26
27
## MySQL
28
29
MySQL5.7から8.0への移行。
30
普通にインストールしてユーザーは
31
@show create user;@と@show grants for <User>@<Host>;@で出た結果を新環境で実行してあげて終わり。
32
33
## SELinux
34
35
redmineにはredmine/filesディレクトリというアップロードファイルを保存するディレクトリがある。
36
ファイルの移行はこれをもってこなきゃダメ。
37
38
コンテナ化の際はdocker-composeでボリュームを/usr/src/redmine/filesにマウントしてあげる
39
例えばこんな感じ:
40
41
docker-compose.yml
42
```
43
    volumes:
44
      # ホストの /var/lib/redmine/files をコンテナの files ディレクトリにマウント
45
      - /var/lib/redmine/files:/usr/src/redmine/files
46
```
47
48
で、SELinuxが動いているとコンテナ内から/var/lib/redmine/filesにアクセスできなかったので一敗。
49
@setenforce 0@で動いたのでSELinuxが原因と確認
50
51
### 対処方法
52
53
```
54
# semanage fcontext -a -t container_file_t "/var/lib/redmine/files(/.*)?"
55
# semanage restorecon -Rv /var/lib/redmine/files/
56
```
57
58
### サブディレクトリ運用
59
60
/redmine以下で運用しているのが鬼門になった。
61 2 sylow castle
/redmine以下をリバースプロキシしてあげたとき
62
CSSは/redmine/stylesheetsフォルダを見に行くのに
63
トップページに表示される「ログイン」のリンクなんかが/redmine/loginじゃなくて/loginになるという事象が発生。
64 1 sylow castle
最終的にredmine(コンテナ内)のconfig.ruを直接編集して無理無理動かした。
65
Before:
66
67
```
68
#/usr/src/redmine# cat config.ru
69
# This file is used by Rack-based servers to start the application.
70
71
require ::File.expand_path('../config/environment',  __FILE__)
72
run RedmineApp::Application
73
```
74
75
After:
76
77
```
78
#/usr/src/redmine# cat config.ru
79
# This file is used by Rack-based servers to start the application.
80
81
require ::File.expand_path('../config/environment',  __FILE__)
82
83
map "/redmine" do
84
  run RedmineApp::Application
85
end
86
```
87
88
GeminiとChat GPTを動員してバグ取り。Geminiは混雑してて途中でリタイアした。
89
nginxrの設定やedmineやRailsの設定をあちこち見た後究極的には
90
「/redmineをハードコードして無理やり動かせない?」
91
で上記の提案を貰って終了。(紆余曲折は省略する)なんかRackとかRailsのmiddleware周りっぽいというところだけ。
92
ChatGPTと共に何敗したか思い出せぬ
93 2 sylow castle
94
とりあえずChatGPTからの金言:
95
「お前まさかredmine 3.4.4から6.1へのアップグレード一気にやろうなんて思ってないよな?」
96
だそうです。