Docker上のWordPressデータのバックアップ&リストア
前回、DockerでWordPress環境を構築した。Dockerは現在も開発が続いており、やや不安定なソフトウェアという印象がある。そういう事情もあり、Docker内のWordPress環境のデータをバックアップ&リストアできるようにしておく。
Volumeの内容を見る
Volumeの確認
まずはVolumeが存在することを確認する。
DRIVER VOLUME NAME
local wordpress_db_data
local wordpress_phpmyadmin_data
local wordpress_www_data
ここでは、3つのVolumeがあることが確認できた。
今回バックアップを行いたいのは、以下の2つである。
・wordpress_www_data
・wordpress_db_data
Volumeの内容を見る
Volumeの内容を見るためにコンテナを作成する必要がある。以下のコマンドで、Volumeをマウントした状態のコンテナを起動する。
root@6765f5b2c015:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr www_data
$ docker run -it –name wp_db_dc -v wordpress_db_data:/db_data ubuntu /bin/bash
root@c7496a7fa129:/# ls
bin db_data etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
docker runコマンドでコンテナを作成する。-itオプションは起動しっぱなしにできるオプション。–nameオプションでコンテナに名前をつける。-vオプションで、Volumeを特定のパスにマウントする。
Volume「wordpress_www_data」は、/www_dataにマウントされて起動される。1つ目のdocker runコマンドの後のlsコマンドで、www_dataが確認できる。
Volumeの内容を見る(次回から)
先ほどのコマンドでコンテナができたので、次回からは以下のコマンドでコンテナを起動すれば良い。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7496a7fa129 ubuntu “/bin/bash” 14 minutes ago Exited (0) 13 minutes ago wp_db_dc
6765f5b2c015 ubuntu “/bin/bash” 12 days ago Exited (0) 7 minutes ago wp_www_dc
$ docker start -i wp_www_dc
$ docker start -i wp_db_dc
Volumeのデータをバックアップ
Volumeのデータをバックアップする。べたな方法であるが、現在のローカルPCのディレクトリを/backupにマウントして、バックアップしたいディレクトをtarで固めて/backupに出力するだけである。
$ docker run –rm –volumes-from wp_db_dc -v $(pwd):/backup ubuntu tar cvf /backup/backup_db.tar /db_data
MySQLのデータは、phpMyAdminからデータのエクスポートを行うのも良いだろう。
Volumeのデータをリストア
Volumeのデータをリストアするときも同じで、コンテナを作成し、先ほどのtarファイルを展開して配置するだけ。
$ docker start -i wp_www_dc2
$ docker run –rm –volumes-from wp_www_dc2 -v $(pwd):/backup ubuntu bash -c “cd /www_data && tar xvf /backup/backup_www.tar –strip 1”
まとめ
今後、主流となっていくであろう2つの技術(AWSとDocker)を利用して、WordPressのブログを安く維持できる仕組みを構築した。今後、AWSはさらに便利に安くなっていくだろうし、勉強する価値がある。また、Dockerの動向も目が離せない。