0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コンテナで起動したDrupalのバックアップを試してみて

Last updated at Posted at 2023-08-05

Docker Hubの使い方を (https://hub.docker.com/_/drupal/) 見てバックアップもしなくちゃなと思って Backup and restoreのモジュールを入れたのだが以下のようなメッセージが
image.png

以下のやり方でバックアップを作成しました。(DrupalのコンテナにPhpの拡張を入れるんでもよかったのかもですが)なお、今回はRancher desktopを使ってやってみてます。
-Drupalのバックアップ
 docker commitでコンテナをイメージで保存
-Mysqlのバックアップ
 Mysql dumpでデータベースのダンプを作成

では早速以下のようにやってみました。
-Drupalの起動
こちらのページを参考に以下のコマンドで
https://hub.docker.com/_/drupal/

docker network create --subnet 172.21.0.0/16 --attachable some-network
docker run -d --name some-mysql --network some-network -e MYSQL_DATABASE=drupal -e MYSQL_USER=user -e MYSQL_PASSWORD=password -e MYSQL_ROOT_PASSWORD=password mysql
docker run --name some-drupal --net some-network -p 8080:80 -d drupal

これでDrupal が立ち上がりセットアップが始まります。
image.png

上記の環境変数で設定したDB設定をもとにDrupalサイトの設定を進めます。設定が終わると
image.png
Drupalの画面になります。

とりあえず適当に基本ページでコンテンツを作ってみます。
メニューにリンクもつけてページも/aboutとしてfrontページに設定します。こちらがfrontページ
image.png

-バックアップの作成
 まずはDrupalのバックアップを
コマンドラインでまずはコンテナの動作を止めます。

 docker stop some-drupal

続いてコンテナのイメージを作成します。ついでにイメージをファイルで保存

 docker commit some-drupal some-drupal:v1
 docker export some-drupal > some-drupal.tar

(確認はpodman imagesで、ファイルに出力は思った以上に時間がかかりました、感覚ですが10分以上)
次にmysqlのバックアップ。mysqlのコンテナに入って

 docker exec -it some-mysql bash

Mysqlのダンプをとります。

 mysqldump -uroot -p'password' drupal > mysqldump-v1

コンテナから抜けてダンプをPCに保存します。

docker cp some-mysql:/mysqldump-v1 .

(確認はlsコマンドで)

次にレストアをしてみます。
一度現状のコンテナを削除してみます。

docker stop some-mysql
docker rm some-drupal some-mysql

まずはmysqlとDrupal(先ほど保存したイメージから)起動します。

docker run -d --name some-mysql --network some-network -e MYSQL_DATABASE=drupal -e MYSQL_USER=user -e MYSQL_PASSWORD=password -e MYSQL_ROOT_PASSWORD=password mysql
docker run --name some-drupal --net some-network -p 8080:80 -d some-drupal:v1

mysqlのデータを戻します。

docker cp mysqldump-v1 some-mysql:/
docker exec -it some-mysql bash

コンテナにはいってダンプデータを戻します。

mysql -u root -p 'password' drupal < mysqldump-v1
exit

execでコンテナからから抜けてブラウザでサイトをみるともとに戻ってますね。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?