最近我在使用docker來部署mysql,但面臨一個很困擾的問題:mysql數(shù)據(jù)無法持久化。每次重新啟動容器,原數(shù)據(jù)就消失了。
經(jīng)過一番研究和嘗試,我發(fā)現(xiàn)原因是因為在docker中運行的mysql容器,容器里的文件系統(tǒng)是臨時的,并不會保存數(shù)據(jù)。因此,我需要使用docker的Volume功能,將容器中的數(shù)據(jù)掛載到宿主機器上,這樣就能保證數(shù)據(jù)能夠持久化下來。
version: '3.1' services: db: image: mysql volumes: - "./db_data:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: password ports: - "3306:3306"
如上所示,我使用了docker-compose來啟動mysql容器,并將mysql容器內(nèi)的/var/lib/mysql掛載到宿主機的./db_data目錄下,這樣以后任何對于mysql容器內(nèi)/var/lib/mysql的寫操作,都會寫到./db_data目錄下,從而實現(xiàn)數(shù)據(jù)持久化。
總結一下,使用docker部署mysql時,如需實現(xiàn)數(shù)據(jù)持久化,需要使用docker的Volume功能,將容器中的數(shù)據(jù)掛載到宿主機器上。