データの永続化 docker volume 周り
Wordpress においては MySQL が扱かうデータがサービス、見た目に大きく影響を与える
当然のことだが、Wordpress は MySQL をデータベース管理システムとして使用している。これによって管理されるデータには、記事の情報やそれに伴う画像等のコンテンツ、さらにはプラグインの設定や、サイトのパスワードといった情報も含まれる。
そのため、MySQL, Wordpress(NGINX + PHP + Wordpress ) という二つのコンテナを作り、それぞれを例えば docker-compose で連携させる場合、「MySQL 側のデータが重要」になってくる。特に、プラグインの情報が含まれるということが大きい。プラグインによって Wordpress のサービスは大きく変わってくる。見た目すらも大きく変わる。
普通に立てた MySQL 用 Docker コンテナ内のデータベースは、container を停止すると、消える
しかし Docker Container を停止すると、データベースのデータは消える。これでは Wordpress の開発に問題がある。なぜなら、DB の内容も、Wordpress の開発に影響してくるからだ。
一つの方法としての volume を使った永続化
まず volume を作る。これはホスト上に実際に作られる。(Docker for Mac の場合、仮想システムにできるようなので、直接 cd 等でアクセスできるわけではない模様。)
docker volume create --name testdatavol
docker volume create --name volume名できたかどうか調べる。
docker volume ls | grep testdatavol # grep でフィルタリングしてみたVOLUME NAME に対象の名前をもった Volume ができていれば OK。次にその volume の詳細を調べてみる。
docker volume inspect testdatavol
docker volume inspect vol名[
{
"CreatedAt": "2018-06-06T10:43:05Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/testvolume/_data", # ただし仮想環境の path
"Name": "testvolume", # マウントさせるとき等に指定する名前
"Options": {},
"Scope": "local"
}
]できている。
Volume をマウントして run してみる
これで ubuntu にログインした後に ls すると、/test_volume ができていることがわかる。
さらにここにファイルを作ってみる。
で
でもう一回 volume を乗っけて実行すると
/test_volume/test がある。
けど volume をマウントしないと
/test_volume/test がない。
変更がしっかり永続化できている。
Docker Compose の場合の一例
compose の場合は少し特殊。だが、volume で永続化しているのは同じ。
Last updated