はじめに
『Laravel環境をDockerで』から始めたDocker for Windows生活
ネットの記事を見て見様見真似でやってみるもMariaDBのデータ永続化ができゃしない
かならずエラーが発生してMariaDBが起動しない状態
回避方法は無いか漁ってたらあるIssueにたどり着きました。
そしてそこには回避方法も記載されているではありませんか!
って事で困りごと1つ目のMariaDBのデータ永続化についてご紹介します。
環境
- Windows10 Pro
- docker for windows (docker desctop community) (ver.2.1.0.2)
docker-compose.yaml(失敗例)
MariaDBが起動しない場合のDockerfileおよびdocker-composeをご紹介します。
一般的なMySQLの手法としてこのような記述のサイトが多いかと思います。
docker-compose.yaml
version: '3'
services:
mariadb:
container_name: laravel_mariadb
build: ./mariadb/
image: laravel_mariadb:10.4.7
ports:
- 3306:3306
volumes:
- ./mariadb/data:/var/lib/mysql # ← 問題の箇所
environment:
- MYSQL_DATABASE=laravel_db
- MYSQL_ROOT_PASSWORD=root@1234
- MYSQL_USER=laravel
- MYSQL_PASSWORD=laravel@1234
この場合、MariaDBのBuildは成功しますが、upするとInnoDB作成時にエラーを履いてこけます。
docker-compose.yaml(成功例)
Issueを元にした例です。
MariaDB用のVolumeをコンテナ化しているのがポイントとなります。
docker-compose.yaml
version: '3'
services:
mariadb:
container_name: laravel_mariadb
build: ./mariadb/
image: laravel_mariadb:10.4.7
ports:
- 3306:3306
volumes:
- dbvolume/data:/var/lib/mysql # ← 問題の箇所
environment:
- MYSQL_DATABASE=laravel_db
- MYSQL_ROOT_PASSWORD=root@1234
- MYSQL_USER=laravel
- MYSQL_PASSWORD=laravel@1234
volumes: # ← Volumesでデータ領域をコンテナとして定義
dbvolume:
これでコンテナのVolumeを消さない限りはデータは存続できます。
これで1点は解決しました!