リモートワーク全盛の今日このごろ。
私的事情で環境が変わったこともあり、MacBook(自宅就業時には持ち帰り。以降、副サーバ)の中に Docker で redmine を入れて、自分の進捗管理やその他の資料保存をしていたが、上司同僚にもイントラで公開する必要が出てきた。と言うことで、私の自宅就業時に、上司同僚が閲覧出来ない状態は都合が悪い。
そこで、デスクトップ端末(Mac mini: 以降、主サーバ)の方にも redmine を立てて同期させ、そちら側を閲覧してもらう事に。
サーバ | IP | 目的 |
---|---|---|
主 | XXX.XXX.XXX.XXX | 閲覧のみ |
副 | YYY.YYY.YYY.YYY | 編集及びリモートワーク時の閲覧用 |
背景
- 主副双方とも M1 チップの mac。
- この redmine については、ユーザが自分のみのため、主サーバの方の権限変更などは考慮していない。
0. 主副サーバ双方の Docker のインストール
先人達の情報と大差ない ので要点のみ。
brew で docker のアプリ, docker-compose をインストールした。設定に顕著な変更は加えていない。
FILE SHARING に、以下のディレクトリを登録している。
/opt/docker/redmine/plugins
/opt/docker/redmine/themes
/opt/docker/redmine/files
/opt/docker/redmine/db
1. 副サーバの Docker 版 redmine の構築状況
先人達の情報と大差ない ので要点のみ。
参考URL の他、色々と情報がある。
私の場合は、
/opt/docker/redmine
+-- docker-compose.yml
+-- plugins/
+-- themes/
+-- files/
+-- db/
(etc...)
な状態で docker-compose up -d
している。プラグインやテーマを複数個入れているが、本稿では触れない。
一応 docker-compose.yml のみ記載する。
docker-compose.yml
version: '3.8'
services:
redmine:
container_name: redmine
image: redmine
restart: always
ports:
- 3000:3000
volumes:
- ./plugins:/usr/src/redmine/plugins
- ./themes:/usr/src/redmine/public/themes
- ./plugins:/usr/src/redmine/files
environment:
REDMINE_DB_MYSQL: redmine-db
REDMINE_DB_PASSWORD: redmine
redmine-db:
image: mariadb
container_name: redmine-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: redmine
MYSQL_DATABASE: redmine
volumes:
- ./db:/var/lib/mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
2. 副サーバから主サーバへの移植
初回のみ。
@副サーバ
イメージの tar 玉化
% pwd
/opt/docker/redmine
# 動いていたら止める。
% docker-compose stop
# イメージの tar 玉作成。ひとつにまとめている。
% docker save -o redmine.tar redmine mariadb
%
@主サーバ
tar 玉他、データコピー
% rsync -av bunzaemon@YYY.YYY.YYY.YYY:/opt/docker/redmine/ /opt/docker/redmine
%
bunzaemon@YYY.YYY.YYY.YYY
はもちろん副サーバのもの。
イメージの読み込み
% cd /opt/docker/redmine
% docker load < redmine.tar
%
起動
% docker-compose up -d --build
%
--build を付けないと、素のイメージを呼び、添付ファイル等が上手く表示されない状態となる。
他のマシンから http://XXX.XXX.XXX.XXX:3000
(主サーバ) にアクセスして表示されたら成功。
3. 次回以降の同期
後は、副サーバに更新が入ったタイミングで、主サーバの方で
@主サーバ
% pwd
/opt/docker/redmine
# docker-compose の停止
% docker-compose stop
# データの同期
% rsync -av bunzaemon@XXX.XXX.XXX.XXX:/opt/docker/redmine/ /opt/docker/redmine
# 起動
% docker-compose up -d --build
%
すればいい。
もちろん、自力で同期スクリプトを作成して定時実行するのもアリ。
-
image の名前は、
docker images
で確認可能。つか docker-compose.yml に明記してある。 ↩