Introduction
Redmine
をローカル環境で構築するとサーバーの費用などが不要であったり,自由度が高いなどメリットが多いのですが,やはり保守面が弱いですよね.たとえば,サーバーがいきない壊れた場合など対策をしていなければ一発でアウトです.しかし,バックアップ用のスクリプトを書くにしても書き出しと読み込みのスクリプトを書かなければならないなど結構面倒です.
そこで今回はなるべく簡単にバックアップ環境を構築しようと思います.ザックリいうとGoogleDriveをコンテナのマウントすることで自動的にバックアップを取ろうという考えです.また,今回もDocker-compose
を使って秒速で環境を構築できます.
Updates!!
- 【2022/10/14】 Redmineを秒速導入
Docker
ファイル作成 - 【2021/10/15】 テーマ変更方法の追加
- 【2021/10/16】 スマホからアクセスする環境の構築
- 【2021/12/10】 [バックアップ環境の構築]()
environment
- Windows11
- Google Drive
Quick Start
Google Drive のインストール
Google drive をインストールしてフォルダにアクセスできる環境を構築してください.
初期化されたフォルダのコピー
GoogleDriveをコンテナにマウントするコマンドを一度コメントアウトします.
version: '3.8'
services:
mariadb:
image: docker.io/bitnami/mariadb:10.3
environment:
- ALLOW_EMPTY_PASSWORD=yes
- MARIADB_USER=bn_redmine
- MARIADB_DATABASE=bitnami_redmine
volumes:
# コンテナからデータを引っ張る用のフォルダ
- 'D:\GoogleDrive\Prj\Redmine\data:/share'
# データ本体 GoogleDriveでバックアップ
# - 'D:\GoogleDrive\Prj\Redmine\data\mariadb:/bitnami/mariadb'
redmine:
image: docker.io/bitnami/redmine:4.2.5
environment:
- REDMINE_DB_USERNAME=bn_redmine
- REDMINE_DB_NAME=bitnami_redmine
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '8888:3000'
volumes:
# コンテナからデータを引っ張る用のフォルダ
- 'D:\GoogleDrive\Prj\Redmine\data:/share'
# データ本体 GoogleDriveでバックアップ
# - 'D:\GoogleDrive\Prj\Redmine\data\themes:/opt/bitnami/redmine/public/themes'
# - 'D:\GoogleDrive\Prj\Redmine\data\db:/opt/bitnami/redmine/public/db'
# - 'D:\GoogleDrive\Prj\Redmine\data\files:/opt/bitnami/redmine/public/files'
# - 'D:\GoogleDrive\Prj\Redmine\data\plugins:/opt/bitnami/redmine/public/plugins'
depends_on:
- mariadb
tty:
true
下記のコマンドで Docker を起動します.
docker-compose up -d
redmine
コンテナの中に入ります.
docker-compose exec redmine /bin/bash
マウントするフォルダをコピーしてきます.
root@14a791e43546:/opt/bitnami/redmine# cp -R db/ /share
root@14a791e43546:/opt/bitnami/redmine# cp -R files/ /share/
root@14a791e43546:/opt/bitnami/redmine# cp -R plugins/ /share/
root@14a791e43546:/opt/bitnami/redmine# cp -R themes/ /share/
コピーしたらいったんコンテナから出ます.次に,mariadb
コンテナの中に入ります.
docker-compose exec mariadb /bin/bash
マウントするフォルダをコピーしてきます.
cp -R mariadb/ /share/
これで完了です.
これをやる理由としてはマウント先のフォルダが上書きされてしまうからです.そのため,現状では空のGoogleDriveのフォルダをマウントしていまうと,Dockerのビルド時に初期化されたフォルダが空になってしまいエラーが多発します.そこで,最初はGoogleDriveのフォルダをマウントせずに起動してから,/share
フォルダにマウントするフォルダをコピーしてビルド時に初期化されたフォルダをGoogleDriveに持ってきます.
再度 Docker の起動
下記のようにコメントアウトして箇所を戻します.
version: '3.8'
services:
mariadb:
image: docker.io/bitnami/mariadb:10.3
environment:
- ALLOW_EMPTY_PASSWORD=yes
- MARIADB_USER=bn_redmine
- MARIADB_DATABASE=bitnami_redmine
volumes:
# コンテナからデータを引っ張る用のフォルダ
- 'D:\GoogleDrive\Prj\Redmine\data:/share'
# データ本体 GoogleDriveでバックアップ
- 'D:\GoogleDrive\Prj\Redmine\data\mariadb:/bitnami/mariadb'
redmine:
image: docker.io/bitnami/redmine:4.2.5
environment:
- REDMINE_DB_USERNAME=bn_redmine
- REDMINE_DB_NAME=bitnami_redmine
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '8888:3000'
volumes:
# コンテナからデータを引っ張る用のフォルダ
- 'D:\GoogleDrive\Prj\Redmine\data:/share'
# データ本体 GoogleDriveでバックアップ
- 'D:\GoogleDrive\Prj\Redmine\data\themes:/opt/bitnami/redmine/public/themes'
- 'D:\GoogleDrive\Prj\Redmine\data\db:/opt/bitnami/redmine/public/db'
- 'D:\GoogleDrive\Prj\Redmine\data\files:/opt/bitnami/redmine/public/files'
- 'D:\GoogleDrive\Prj\Redmine\data\plugins:/opt/bitnami/redmine/public/plugins'
depends_on:
- mariadb
tty:
true
下記のコマンドで Docker を起動します.
docker-compose up -d
無事にアクセスすることができました.
Detail
システム構成
下記のような構成です.Windows11上のDockerでRedmineとmariadbを構築します.そのコンテナ内のデータをGoogle Driveのフォルダをマウントすることでバックアップ環境を構築します.
これによりデータはローカルとGoogleのサーバーに保存されたことになり万が一ローカルのPCが破損しても問題なく復旧できる環境を構築しました.
フォルダ構成
リポジトリはこのような構成になっておりdocker-compose.yml
が本体です.
D:.
│ docker-compose.yml ← Dockerファイル本体
│ LICENSE
│ README.md
│
└─docs
Google Driveのフォルダはこのような構成になっています.
D:.
├─GoogleDrive ← Google Driveのフォルダ
│ └─Prj
│ └─Redmine
│ └─data
│ ├─db ← バックアップ兼データ保存フォルダ
│ ├─files ← バックアップ兼データ保存フォルダ
│ ├─mariadb ← バックアップ兼データ保存フォルダ
│ ├─plugins ← バックアップ兼データ保存フォルダ
│ ├─share ← コンテナからデータを引っ張る用のフォルダ
│ └─themes ← バックアップ兼データ保存フォルダ
Github
Reference site
- はまる木 redmine 関係のサイト
- Dockerを使ってEC2にredmineを構築する(前編)
- Docker Compose で Redmine 公式イメージを起動する
- Docker ComposeでRedmineを動かす
コメント