最近我在使用docker来部署mysql,但面临一个很困扰的问题:mysql数据无法持久化。每次重新启动容器,原数据就消失了。
经过一番研究和尝试,我发现原因是因为在docker中运行的mysql容器,容器里的文件系统是临时的,并不会保存数据。因此,我需要使用docker的Volume功能,将容器中的数据挂载到宿主机器上,这样就能保证数据能够持久化下来。
version: '3.1'services:db:image: mysqlvolumes:- "./db_data:/var/lib/mysql"restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: passwordports:- "3306:3306"
如上所示,我使用了docker-compose来启动mysql容器,并将mysql容器内的/var/lib/mysql挂载到宿主机的./db_data目录下,这样以后任何对于mysql容器内/var/lib/mysql的写操作,都会写到./db_data目录下,从而实现数据持久化。
总结一下,使用docker部署mysql时,如需实现数据持久化,需要使用docker的Volume功能,将容器中的数据挂载到宿主机器上。