MySQL镜像忽略了docker-compose.yml的卷配置

时间:2015-10-12 18:37:39

标签: mysql docker docker-compose

使用官方的MySQL Docker镜像,我不明白如何将数据目录挂载到主机上的特定点。 The Dockerfile图像集

Archive:  kimberly-geswein_just-realize.zip

  _____           _   ____                       
 |  ___|__  _ __ | |_/ ___| _ __   __ _  ___ ___ 
 | |_ / _ \| '_ \| __\___ \| '_ \ / _` |/ __/ _ \
 |  _| (_) | | | | |_ ___) | |_) | (_| | (_|  __/
 |_|  \___/|_| |_|\__|____/| .__/ \__,_|\___\___|.com
                           |_|                   

    Visit us at http://www.fontspace.com for more
    information on this font, or for thousands of 
    more fonts!


  inflating: JustRealize.ttf         
  inflating: JustRealizeBold.ttf     
 extracting: KGFonts-TOU.txt         

所以数据库数据应该存储在主机上的“某处”。我希望在我的docker-compose文件中更具体,所以我尝试了以下内容:

VOLUME /var/lib/mysql

mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=mydb volumes: - ./database/mysql:/var/lib/mysql 开始一切正常,但主机上的./database/mysql目录保持为空,而容器中的/ var / lib / mysql包含数据。我的配置有问题吗?或者我是否误解了如何使用卷?

1 个答案:

答案 0 :(得分:9)

docker-compose将始终尝试保留数据卷,以便您不会丢失其中的任何数据。如果您从数据卷开始,然后更改为主机卷,则仍可能获得数据量。

要更正此问题,请运行docker-compose stop && docker-compose rm -f,这将删除容器和数据卷(这将清除数据卷中的所有数据)。在下一个docker-compose up,您应该使用主机卷看到它。

编辑:从撰写1.6开始,您可以运行docker-compose stop -v而不是上面的两个命令。