備忘
できるだけシンプルに1コンテナで個人使用用途のRedmineを起動、運用する。
Dockerhubの公式イメージを使用。
DBも別途立ち上げることはせず、デフォルトのSQLiteをそのまま使用。
検証環境
- Fedora Linux 35 (Workstation Edition)
- Docker version 20.10.11, build 485636f
- 一般ユーザーで使用
- podman version 3.4.4
- 以下はdockerコマンドをそのままpodmanコマンドに置き換えても動作する。
Redmineサーバーの起動
$ docker run -d --restart always --name myredmine -p 3000:3000 docker.io/library/redmine:latest
この場合、http://<サーバーのアドレス>:3000で接続。
初期ユーザー/パスワードはadmin/admin
Redmineサーバーのバックアップ
db本体のバックアップ
$ docker cp myredmine:/usr/src/redmine/sqlite/redmine.db ./redmine.db
添付画像ファイルなどのバックアップ
$ docker exec myredmine tar zcvf - files > ./files.tar.gz
コンテナ内のWORKDIRは/usr/src/redmine。
Redmineサーバーのリストア
dbリストア、オーナー、グループの戻し、リスタート
$ docker cp ./redmine.db myredmine:/usr/src/redmine/sqlite/redmine.db
$ docker exec myredmine chown redmine.redmine sqlite/redmine.db
$ docker restart myredmine
オーナー、グループが変更されてしまうのでchownにて戻す。
docker cp --archiveでバックアップ、リストアとしても良いかもしれないが、バックアップファイルの扱いが面倒となりそうなので避けている。
スクリプトなどで連続して実行する場合は、間にsleepなどをいれないと失敗するケースがあったので注意。
添付画像ファイルなどのリストア
$ docker cp ./files.tar.gz myredmine:/usr/src/redmine
$ docker exec myredmine tar zxvf files.tar.gz
$ docker exec myredmine rm files.tar.gz
こちらはredmine.dbとは異なり、docker restartで消えてしまったのでrestart後に実施。
コンテナ内で実行するtarコマンドのstdinに直接繋らなかったので、ファイルをcpしてtarにて展開。
参考
Redmine(docker) + MariaDB(docker)からバックアップとリストア
https://qiita.com/HyunwookPark/items/128130b9c69ea328bff4