プロジェクト

全般

プロフィール

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

sylow castle, 2026/07/02 15:27

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 3 sylow castle
66
Nginx
67
```
68
        location ^~ /redmine/ {
69
          proxy_pass http://127.0.0.1:3000;
70
```
71
こんな感じになる。proxy_passに入れていた末尾/は削除されました。
72 1 sylow castle
Before:
73
74
```
75
#/usr/src/redmine# cat config.ru
76
# This file is used by Rack-based servers to start the application.
77
78
require ::File.expand_path('../config/environment',  __FILE__)
79
run RedmineApp::Application
80
```
81
82
After:
83
84
```
85
#/usr/src/redmine# cat config.ru
86
# This file is used by Rack-based servers to start the application.
87
88
require ::File.expand_path('../config/environment',  __FILE__)
89
90
map "/redmine" do
91
  run RedmineApp::Application
92
end
93
```
94 3 sylow castle
95
一応これでリンクは直ったんだけどログインすると今度は422エラーという症状、CookieのPathが/redmine/redmineになっていたのが原因。
96
それはNginxで入れていた
97
```
98
          proxy_cookie_path / /redmine/;
99
```
100
という設定をコメントアウトしてクッキー削除して食わせなおしたりしてあげたら直った。
101 1 sylow castle
102
GeminiとChat GPTを動員してバグ取り。Geminiは混雑してて途中でリタイアした。
103
nginxrの設定やedmineやRailsの設定をあちこち見た後究極的には
104
「/redmineをハードコードして無理やり動かせない?」
105
で上記の提案を貰って終了。(紆余曲折は省略する)なんかRackとかRailsのmiddleware周りっぽいというところだけ。
106
ChatGPTと共に何敗したか思い出せぬ
107 2 sylow castle
108
とりあえずChatGPTからの金言:
109
「お前まさかredmine 3.4.4から6.1へのアップグレード一気にやろうなんて思ってないよな?」
110
だそうです。