Docker で mysql を再起動ループさせる

とても簡単にできるけど処理がめんどくさい(なにも知らなかったため)

まずはこんな感じの docker-compose ファイルがあるとする

version: '3'

services:
  db:
    image: mysql
    container_name: db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    expose:
      - 3306
    ports: 
      - 127.0.0.1:3306:3306
    logging:
      options:
        max-size: "10k"
        max-file: "5"
  volumes:
    db_data:
      driver: local

ここで docker コンテナを起動する

docker-compose up -d

 

次にここから 5.7 を消す

version: '3'

services:
  db:
    image: mysql
    container_name: db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    expose:
      - 3306
    ports: 
      - 127.0.0.1:3306:3306
    logging:
      options:
        max-size: "10k"
        max-file: "5"
  volumes:
    db_data:
      driver: local

 

docker コンテナを起動する

docker-compose up -d

 

そしてもう一度 :5.7 を追加する

version: '3'

services:
  db:
    image: mysql
    container_name: db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    expose:
      - 3306
    ports: 
      - 127.0.0.1:3306:3306
    logging:
      options:
        max-size: "10k"
        max-file: "5"
  volumes:
    db_data:
      driver: local

docker コンテナを起動する

docker-compose up -d

 

バージョンの上げ下げすると再起動ループに入るらしい

対処方法(Docker Desctop)

  1. 該当コンテナを削除する
  2.  それっぽい名前の volume を削除する(先に volume だけ削除しようとすると container が使っていると怒られた)

docker volume 検索・削除(ls で出てきたやつを rm のあとにいれる)

docker-compose down
docker volume ls
docker volume rm db-data

結論

何も考えずにバージョンの上げ下げをするのはよくない
docker volume の役割は未だわかっていない

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA