コンテナの作成
ネットワークを作成
名前解決のためにコンテナ間にネットワークを作る
$ docker network create -d bridge wp-net
MySQL側
mysql.envを用意
MYSQL_ROOT_PASSWORD=password MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=password
MySQLのコンテナを起動
$ docker container run -d --network wp-net --name mysql --mount "source=mysqlvolume,target=/var/lib/mysql" --mount "type=bind,source=$(pwd),target=/mysqlbackup" --env-file mysql.env mysql:5.7.28
Wordpress側
wordpress.envを用意
WORDPRESS_DB_HOST=mysql:3306 WORDPRESS_DB_NAME=wordpress WORDPRESS_DB_USER=wordpress WORDPRESS_DB_PASSWORD=password
wordpressのコンテナを起動
$ docker container run -d --network wp-net -p 8081:80 --env-file wordpress.env --name wordpress wordpress:5.2.3-php7.3-apache
バックアップの実施
wordpressで適当に記事書く
wordpressで1記事書いてみる
mysqldump
mysqlコンテナでmysqldumpを行う
バックアップ先はBindしてあるので、ローカルにsqlファイルが保存される
$ docker container exec mysql bash -c "mysqldump -u root -ppassword -A > mysqlbackup/20220621.sql"
コンテナ/ボリューム削除
$ docker container stop mysql wordpress $ docker container rm mysql wordpress $ docker volume rm mysqlvolume
復元
# mysqlコンテナを再び起動 $ docker container run -d --network wp-net --name mysql --mount "source=mysqlvolume,target=/var/lib/mysql" --mount "type=bind,source=$(pwd),target=/mysqlbackup" --env-file mysql.env mysql:5.7.28 # 復元 $ docker container exec mysql bash -c "mysql -u root -ppassword < /mysqlbackup/20220621.sql" # wordpressコンテナも再び起動 $ docker container run -d --network wp-net -p 8081:80 --env-file wordpress.env --name wordpress wordpress:5.2.3-php7.3-apache
見事、記事が復元されている