我有一个使用 mysql docker 运行的应用程序。有时,比如每两天,容器会自行重新启动,并且我拥有的数据库会丢失。
这是我的 docker-compose.yml,我使用 docker-compose -d mysql 运行 docker:
version: '3.8'
services:
mysql:
image: mysql:8.0.33
restart: always
container_name: $DB_CONTAINER_NAME
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE=$MYSQL_DATABASE
- MYSQL_USER=$MYSQL_USER
- MYSQL_PASSWORD=$MYSQL_PASSWORD
volumes:
- mysql_db_2:/var/lib/mysql
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
interval: 5s
timeout: 3s
retries: 5
volumes:
mysql_db_2:
容器启动后,我使用 sql 恢复文件恢复数据库,然后检查目录
/var/lib/docker/volumes/backend_mysql_db_2/_data/my_db/
,ibd 文件就在那里。但是当容器重新启动时我会丢失数据。是否存在配置错误,或者我的数据可能被盗?
有什么方法可以删除卷 mysql_db_2 吗?如果您在容器修剪之后运行卷修剪,则可能会发生这种情况。
我们还可以将卷更改为本地文件夹,即使在卷修剪后也不会删除。
volumes:
- ./mysql_db_2:/var/lib/mysql
这将会