解説
Dockerボリュームはバックアップ?永続化と復元準備の違い
コンテナを作り直しても残るデータと、事故から戻せるデータは別。DBとアップロード画像の保護を整理するよ。

コンテナを消してもデータが残ると、安心するよね。でも、残ることと、壊れたときに戻せることは別なんだ。

図:永続化しているだけでは、誤削除・破損・保存先の喪失から戻せるとは限らない。
ボリュームは保存場所
名前付きボリュームを使うと、コンテナのライフサイクルからデータを分離できるよ。ただし、その保存先を失ったり、中のデータを誤って変更したりすると、以前の状態へ戻せるとは限らない。
services:
db:
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
これはPostgreSQL 17の一般的なデータ保存先を使う構成例。別バージョンやイメージでは保存先も確認してね。
保存するものを分けて書き出そう
| 対象 | 保存したいもの |
|---|---|
| データベース | 本文、設定、ユーザー情報など |
| アップロード | 記事画像、添付ファイル |
| コード | アプリ、スキーマ、依存の固定情報 |
| 秘密情報 | 復元に必要な鍵・環境設定を適切な保管先へ |
Gitでコードを保存しても、DBの本文や画像まで含まれるとは限らないよ。逆に、秘密情報をGitへ入れて解決しないようにしよう。
稼働中DBのコピーには注意
データファイルを稼働中にそのままコピーすると、整合性を保ったバックアップにならない場合があるよ。DBが提供するバックアップ方法を使うか、停止・スナップショットなどの条件を確認しよう。この記事では、未検証のDBコピーコマンドは載せないよ。
バックアップができたら復元を試す
別の検証環境で、本文が読めるか、画像が出るか、必要な権限や設定が戻るかを確かめよう。復元した時刻と、失ってよい更新の範囲も記録しておくと判断しやすい。
普段の停止でdocker compose down -vを使うと、対象の名前付きボリュームも削除されるので注意してね。削除操作をバックアップ手順に混ぜず、保存と復元の確認を先に行おう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。