【Docker Compose】RedmineをGoogleDriveで自動バックアップ環境を構築【Windows11】

Docker

Introduction

Redmineをローカル環境で構築するとサーバーの費用などが不要であったり,自由度が高いなどメリットが多いのですが,やはり保守面が弱いですよね.たとえば,サーバーがいきない壊れた場合など対策をしていなければ一発でアウトです.しかし,バックアップ用のスクリプトを書くにしても書き出しと読み込みのスクリプトを書かなければならないなど結構面倒です.

そこで今回はなるべく簡単にバックアップ環境を構築しようと思います.ザックリいうとGoogleDriveをコンテナのマウントすることで自動的にバックアップを取ろうという考えです.また,今回もDocker-composeを使って秒速で環境を構築できます.

Updates!!

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

GitHub - HamaruKi0303/redmine_docker-compose
Contribute to HamaruKi0303/redmine_docker-compose development by creating an account on GitHub.

Reference site

コメント

タイトルとURLをコピーしました