Redmine(docker) + MariaDB(docker)からバックアップとリストア


前提

docker hubにあるbitnamiのRedmineを使う。
以下のようにRedmine + MariaDBのコンテナを作成した。
docker-compose使っててもバックアップやリストアの手順は変わらないはず。

$ docker network create redmine_network
$ docker run -d --name mariadb --net=redmine_network -e ALLOW_EMPTY_PASSWORD=yes -e MYSQL_USER=root  bitnami/mariadb
$ docker run -d --name redmine --net=redmine_network -p 外部から接続するポート:3000 bitnami/redmine:3.3.1-r11

バックアップ

Redmineコンテナからファイルが入っているディレクトリを圧縮

コンテナに入って、/bitnami/redmine/files配下をまるごと圧縮する。

$ docker exec -it redmine /bin/bash
(コンテナに入った↓)
# tar -zcvf /bitnami/redmine/files.tar.gz /bitnami/redmine/files

mariadbからデータダンプ取得

コンテナに入って、mysqldumpでデータをEXPORTする。

$ docker exec -it --user root mariadb /bin/bash
(コンテナに入った↓)
# mysqldump -u ユーザ -pパスワード bitnami_redmine > /bitnami/db_backup.dmp

コンテナ内のファイルを取り出す

$ docker cp mariadb:/bitnami/db_backup.dmp ~
$ docker cp redmine:/bitnami/redmine/files.tar.gz ~

リストア

バックアップファイルをコンテナに入れる

$ docker cp ./db_backup.dmp mariadb:/bitnami/
$ docker cp ./files.tar.gz redmine:/bitnami/redmine/

Redmineのコンテナ内でバックアップファイルを展開する

$ docker exec -it redmine /bin/bash
(コンテナに入った↓)
# tar -zxvf /bitnami/redmine/files.tar.gz

※ファイルの権限には注意
※解凍する場所に注意

MariaDBのユーザとパスワードを確認する

Redmineのコンテナに入ったまま、データベースへの接続情報を確認する。

# cat /bitnami/redmine/conf

(省略)
production:
  adapter: mysql2
  database: bitnami_redmine
  host: mariadb
  username: ユーザ
  password: パスワード
  encoding: utf8
(省略)

MariaDBのコンテナでダンプファイルをインポートする

$ docker exec -it --user root mariadb /bin/bash
(コンテナに入った↓)
# mysql -u ユーザ -pパスワード bitnami_redmine < /bitnami/db_backup.dmp