3
2

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 5 years have passed since last update.

Docker for WindowsでMariaDBのデータを永続化

Last updated at Posted at 2019-09-12

はじめに

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点は解決しました!

参考

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?