Podman-DesktopにBitnami Redmineをインストールする

# はじめに
自分のTodo管理にWindows端末上でRedmineを使ってみることにした
現在所属しているプロジェクトでRedmineを使ってタスク管理を行っているので、Redmineの使い方を覚えることも兼ねている

# 環境情報
- OS: Windows 10 Pro 22H2
- RAM: 8.0GB
- SSD: 256GB
- Podman Desktop: v1.1.0
- Podman: v4.5.1

# Bitnami Redmineのインストール(Redmine関連コンテナの起動)
podman machine上でpodman-composeコマンドを利用するので、Windows PowerShell(管理者)にてWSLでpodman-machine-defaultに接続する
```
PS C:\WINDOWS\system32> wsl -d podman-machine-default

You will be automatically entered into a nested process namespace where
systemd is running. If you need to access the parent namespace, hit ctrl-d
or type exit. This also means to log out you need to exit twice.

[user@hostname ~]$
```

[Bitnanamiのホームページ](https://bitnami.com/stack/redmine/containers)から**Dockerhub Debian**のリンクをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472468/f9000789-3bd2-771c-76a1-ea56f95fb5e4.png)

上記ページの記載に従って、以下のdocker-compose.ymlをpodman-machine上にダウンロードする
本環境ではプロキシを経由する必要があるため、`-x`オプションでプロキシの情報を指定する
```
[user@hostname ~]$ curl -x http://ユーザー:パスワード@ホスト:ポート -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/redmine/docker-compose.yml > docker-compose.yml
```
```
docker-compose.yml

version: '2'
services:
  mariadb:
    image: docker.io/bitnami/mariadb:10.6
    volumes:
      - 'mariadb_data:/bitnami/mariadb'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=bn_redmine
      - MARIADB_DATABASE=bitnami_redmine
  redmine:
    image: docker.io/bitnami/redmine:5 <- (1)
    ports:
      - '80:3000' <- (2)
    volumes:
      - 'redmine_data:/bitnami/redmine'
    depends_on:
      - mariadb
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - REDMINE_DATABASE_HOST=mariadb
      - REDMINE_DATABASE_PORT_NUMBER=3306
      - REDMINE_DATABASE_USER=bn_redmine
      - REDMINE_DATABASE_NAME=bitnami_redmine
volumes:
  mariadb_data:
    driver: local
  redmine_data:
    driver: local
```
`(1)`Redmineの現時点での最新バージョンは`5`だが、古いバージョンにしか対応していないpluginを利用したかったため`4`に変更した
`(2)`の部分で左側の`80`を書き換えると端末上のRedmineの待ち受けポート番号を変更することができる
今回は`8181`に書き換えた

`docker-compose `を`podman-compose`に読み替えて実行
```
[user@hostname ~]$ podman-compose up -d
```

プラウザから`http://localhost:8181`へアクセスするとRedmineのページが表示されたので環境構築成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472468/23607f2f-0915-8de9-b36a-64514889ab51.png)

**ログイン** リンクをクリックしてログインしてみる
デフォルトで用意されているユーザ名/パスワードは`user/bitnami1`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472468/06fc913f-583a-921f-efae-d6ead0c1d22e.png)

**管理** -> **情報** とクリックしていくとRedmineのバージョン情報が確認できる
今回のバージョンは`4.2.5.stable`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472468/070579a0-325b-7b2b-447c-bfe0ceb507fc.png)

以上でRedmineのインストールは完了

# Redmineデータの移行
元々はWindowsアプリ版のRedmineを使っていたが、今回構築したContainer版のRedmineへデータ移行を行ってみる
- 移行元Redmine version: Redmine 4.2.1.stable
- 移行先Redmine version: Redmine 4.2.5.stable

Windowsアプリのデータベース名などの情報は以下ファイルにて確認する
`D:\Bitnami\redmine-4.2.1-2\apps\redmine\htdocs\config\database.yml`

バックアップはWindows PowerShell(管理者)にて以下のコマンドを実行
```
PS C:\bitnami\redmine-win-backups> C:\Bitnami\redmine-4.2.1-2\mysql\bin\mysqldump.exe -u <データベースユーザ名> -p<データベースユーザパスワード> <データベース名> -P <ポート番号> --default-character-set=binary --no-tablespaces > backup.dmp
 
PS C:\bitnami\redmine-win-backups> xcopy /T /E C:\Bitnami\redmine-4.2.1-2\apps\redmine\htdocs\files files
PS C:\bitnami\redmine-win-backups> xcopy /T /E C:\Bitnami\redmine-4.2.1-2\apps\redmine\htdocs\plugins plugins
```

今回はデータベースデータである`backup.dmp`をリストアする
Container版のデータベース情報は以下のコマンドで確認する
```
[user@hostname ~]$ podman exec -it user_redmine_1 cat /bitnami/redmine/config/database.yml
```

データベースのリストアは以下のコマンド
以下は自端末の`C:\bitnami\redmine-win-backups`に`backup.dmp`がある場合
```
[user@hostname ~]$ cat /mnt/c/bitnami/redmine-win-backups/backup.dmp | podman exec -i user_mariadb_1 /opt/bitnami/mariadb/bin/mysql -u bn_redmine bitnami_redmine
```

プラウザから`http://localhost:8181`へアクセスするとRedmineのページが表示され、Windowsアプリ版でログインしていたユーザ名/パスワードでログインが成功してチケット情報もリストアされていることを確認できた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472468/3d3d5410-5716-09bd-822f-a4246f65fe29.png)

# おわりに
以上でRedmineをWindowsアプリ版からContainer版へ移行することができた
Container版を利用することで構築した環境の可搬性があがることが期待できる
例えば、構築した環境をインターネットへの接続が許容されない閉域環境にリストアして使用するなどが可能となる
今後は構築した環境をイメージ化して移動する手法も実施したい

# 参考ページ
- [Redmine packaged by Bitnami Containars](https://bitnami.com/stack/redmine/containers)
- [Redmine.jp データのバックアップ方法](https://redmine.jp/faq/system_management/backup/)
- [Bitmani Redmineのバックアップとリストア](https://nomoredeathmarch.hatenablog.com/entry/2019/06/09/145909)
- [【Redmine】docker環境でのバックアップとリストア](https://mytracking.hatenablog.com/entry/2018/01/03/213357)
- [Redmine(docker) + MariaDB(docker)からバックアップとリストア](https://qiita.com/HyunwookPark/items/128130b9c69ea328bff4)