docker-composeのvolumesでデータベース永続化

開発環境:

  • Mac OS Mojave
  • Docker 2.3.0.3

Django と mysqlを使って最近開発をしているのですが、docker-compose up -d をたたいて立ち上げるたびにマイグレーションを行わないといけない問題があったので、永続化してみました。

docker-compose.ymlを以下のようにvolumesのところを追加したところ永続化できました。

version: '3'
services:
  mysql:
    image: mysql
    env_file: ./mysql/.env_sample
    volumes:                                                         # ここ追加 
       - db_data:/var/lib/mysql                      # ここ追加
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
    networks:
      app_net:
        ipv4_address: 172.20.0.3
    depends_on:
      - django

  django:
    build: ./
    ports:
      - "8000:8000"
    volumes:
      - ./:/code
    networks:
      app_net:
        ipv4_address: 172.20.0.2
    tty: true

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24
volumes:
  est-data:
  db_data:                                                             # ここ追加

volumesでいろいろできるそうです、まだあまり理解できていませんが、、、

参考:

データの永続化 docker volume 周り