とても簡単にできるけど処理がめんどくさい(なにも知らなかったため)
まずはこんな感じの 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: localdocker コンテナを起動する
docker-compose up -d
バージョンの上げ下げすると再起動ループに入るらしい
対処方法(Docker Desctop)
- 該当コンテナを削除する
- それっぽい名前の volume を削除する(先に volume だけ削除しようとすると container が使っていると怒られた)
docker volume 検索・削除(ls で出てきたやつを rm のあとにいれる)
docker-compose down docker volume ls docker volume rm db-data
結論
何も考えずにバージョンの上げ下げをするのはよくない
docker volume の役割は未だわかっていない
