My Redmineを解約したあとでも、「バックアップデータ取得(解約時用)」で取得したデータがあれば、手元のPCで過去のデータを確認できます。
この記事では、Dockerを使ってRedMicaを起動し、My Redmineのバックアップデータを復元する方法を紹介します。
一度環境を作っておけば、常にRedMicaを起動しておく必要はありません。過去のチケットやWiki、添付ファイルなどを確認したくなったときだけ起動することができます。
Dockerコンテナを実行でき、dockerコマンドとdocker composeコマンドを利用できる環境が準備されていることを前提とします。 コマンドは、お使いのDocker環境でdockerコマンドを実行できるターミナルから実行してください。
この記事では、WindowsとMacを対象とします。 特に記載がない限り、掲載しているコマンドはWindowsとMacのどちらでも同じように実行できます。
My Redmineのバックアップデータを手元のPCで復元し、ブラウザで閲覧するまでの大まかな流れは次のとおりです。
Gen.1とGen.2では利用しているデータベースが異なります。
| My Redmine世代 | My Redmine URL | データベース |
|---|---|---|
| Gen.2 | https://*****.cloud.redmine.jp/ |
PostgreSQL |
| Gen.1 | https://my.redmine.jp/*****/ |
MySQL |
この記事では、データベースに関係する部分だけGen.1とGen.2で手順を分けています。それ以外の手順は共通です。
次のものを用意してください。
オプションサービス「バックアップデータ取得(解約時用)」で取得したデータを使用します。 バックアップには主に次のデータが含まれています。
データベースの形式はMy Redmineの世代によって異なります。
以降の手順では、バックアップデータを作業するPCへダウンロード済みであるものとします。
Dockerコンテナを実行でき、dockerコマンドとdocker composeコマンドを利用できる環境を用意してください。 本記事ではDocker環境そのもののインストール方法は扱いません。
次のコマンドを実行して、DockerとDocker Composeが利用できることを確認します。
docker --version docker compose version
バージョン情報が表示されれば準備完了です。
作業用のディレクトリを作成します。
mkdir my-redmine cd my-redmine
このディレクトリの中に、次のファイルを作成します。
my-redmine/ ├── Dockerfile └── docker-compose.yml
RedMicaをDockerで動かすため、Futuremine Technologiesが提供しているDockerイメージ futuremine/RedMica を使用します。
Dockerfileを次の内容で作成します。
FROM futuremine/RedMica:latest
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends \
fonts-noto-cjk \
fontconfig && \
rm -rf /var/lib/apt/lists/* && \
fc-cache -fv
USER redmine
このDockerfileでは、RedMicaのイメージに日本語フォントを追加しています。
My Redmine Gen.2とGen.1では使用するデータベースが異なるため、利用していた環境に合わせてどちらか一方を使用してください。
なお、使用するRedMicaのコンテナイメージはAMD64プロセッサ向けです。そのため、docker-compose.yml ではRedMicaに platform: linux/amd64 の指定を行っています。Apple Silicon(M1/M2/M3など)を搭載したMac等ではエミュレーション機能で実行されるため、イメージのビルドや起動に時間がかかる場合があります。
パスワードについて 以下の設定例では、手順を分かりやすくするためデータベースのパスワードを
redmineとしています。実際に利用する際は、適切にパスワードに設定してください。
docker-compose.yml を次の内容で作成します。
services:
RedMica:
build: .
platform: linux/amd64
ports:
- "127.0.0.1:3000:3000"
environment:
REDMINE_DB_POSTGRES: db
REDMINE_DB_DATABASE: redmine
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: redmine
volumes:
- ./files:/usr/src/redmine/files
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_DB: redmine
POSTGRES_USER: redmine
POSTGRES_PASSWORD: redmine
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
docker-compose.yml を次の内容で作成します。
services:
RedMica:
build: .
platform: linux/amd64
ports:
- "127.0.0.1:3000:3000"
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_DATABASE: redmine
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: redmine
volumes:
- ./files:/usr/src/redmine/files
depends_on:
- db
db:
image: mysql:lts
environment:
MYSQL_DATABASE: redmine
MYSQL_USER: redmine
MYSQL_PASSWORD: redmine
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
ここから、My Redmineから取得したバックアップデータをDocker環境へ復元します。 まずは、最初にデータベースだけを起動してバックアップを復元し、そのあとRedMicaを起動します。
次のコマンドを実行します。
docker compose up -d db
データベースが起動したことを確認します。
docker compose ps
db が起動していれば準備完了です。
バックアップファイルを Dockerfile や docker-compose.yml と同じディレクトリに置いてから実行してください。
次のコマンドの xxxxx-pgsqldump.sqlc.gz は、バックアップデータに含まれる実際のデータベースバックアップファイル名に変更して下さい。
docker compose cp xxxxx-pgsqldump.sqlc.gz db:/tmp/sqldump.gz
バックアップからデータベースを復元します。
docker compose exec db sh -c 'gzip -dc /tmp/sqldump.gz | pg_restore -U redmine -d redmine --no-owner --no-privileges'
バックアップからデータベースを復元します。
docker compose exec db sh -c 'gzip -dc /tmp/sqldump.gz | mysql -uredmine -p"$MYSQL_PASSWORD" redmine'
My Redmineから取得した添付ファイルのバックアップを展開します。
添付ファイルのバックアップは、例えば xxxxx-files.tar のようなファイルです。
このtarファイルには files ディレクトリが含まれているため、my-redmine ディレクトリでそのまま展開します。
※ xxxxx-files.tar は、バックアップデータに含まれる実際のファイル名に置き換えて下さい。
tar -xf xxxxx-files.tar
ファイルの展開やコピーには、上記のコマンド以外にもWindowsのエクスプローラーやMacのFinder等を利用できます。
最終的に、おおむね次のような構成になります。
my-redmine/
├── Dockerfile
├── docker-compose.yml
└── files/
├── 2024/
├── 2025/
└── ...
データベースと添付ファイルの復元が終わったら、RedMicaを起動します。
docker compose up -d
初回はRedMicaイメージのビルドや起動処理が行われるため、少し時間がかかる場合があります。 状態は次のコマンドで確認できます。
docker compose ps
ログを確認したい場合は次のコマンドを実行します。
docker compose logs -f RedMica
※ログの表示を終了するには、Ctrlキーを押しながらCキーを押します。
起動が完了したら、Webブラウザで次のURLへアクセスします。
My Redmineで利用していたRedMicaの画面が表示されます。
ログイン後、My Redmineで利用していたデータを確認してください。 例えば次のようなデータを確認できます。
特に、次の点を確認すると、バックアップが正しく復元できたか判断しやすくなります。
※My Redmine固有の機能やプラグインについては、元の環境と全く同じ状態にならない場合があります。この記事で作成する環境は、解約後に過去のデータを参照することを主な目的としています。
データの確認が終わったら、次のコマンドで停止できます。
docker compose stop
コンテナを停止しても、データベースや添付ファイルのデータは残ります。
再び確認したい場合は、作業用ディレクトリで次のコマンドを実行したあと、再度ブラウザで http://localhost:3000/ にアクセスします。
docker compose start
次のコマンドはコンテナを削除しますが、データベースを保存しているDocker volumeは残します。
docker compose down
一方、次のように -v オプションを付けると、データベースを保存しているvolumeも削除されます。
docker compose down -v
-v を付けて削除すると、再び利用するときにはバックアップデータの復元からやり直す必要がありますのでご注意ください。
※添付ファイルはローカルの files ディレクトリに保存されているため削除されません。添付ファイルも含めて完全に削除する場合は、docker compose down -v を実行後に my-redmine ディレクトリ自体を削除してください。
docker info を実行し、情報が表示されるか確認してください。docker compose ps や docker compose logs RedMica(または db)でエラーログが出ていないか確認してください。my-redmine/files/ の構成になっているか確認してください(files/files/ のように二重ディレクトリになっていないか確認)。My Redmineを解約しても、「バックアップデータ取得(解約時用)」でバックアップを取得しておけば、Dockerを使って手元のPCにRedMica環境を作成し、過去のデータを確認できます。
一度環境を作成しておけば常時運用する必要はなく、確認したいときだけ docker compose start で起動し、終わったら docker compose stop で停止できます。
万一夜の解約に備えバックアップデータを保管しておくことで、将来的に過去のチケットやWiki、添付ファイルが必要になった際も安心です。