首页 文章

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

提问于
浏览
6

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

VOLUME /var/lib/mysql

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

mysql:
  image: mysql:5.7
  environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=mydb
  volumes:
    - ./database/mysql:/var/lib/mysql

docker-compose up 开始一切正常,但主机上的./database/mysql目录保持为空,而容器中的/ var / lib / mysql包含数据 . 我的配置有问题吗?或者我误解了如何使用卷?

1 回答

  • 9

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

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

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

相关问题