MySQL映像忽略docker-compose.yml的卷configuration

使用正式的MySQL Docker镜像,我不明白如何将数据目录挂载到主机上的某个特定点。 图像集的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开始构build一切正常,但主机上的./database/mysql目录保持为空,而容器中的/ var / lib / mysql包含数据。 我的configuration有问题吗? 还是我误解如何使用卷?

docker-compose会一直尝试保留数据量,这样就不会丢失数据。 如果您开始使用数据卷,然后更改为主机卷,则仍然可以获取数据卷。

要解决这个问题,运行docker-compose stop && docker-compose rm -f ,这将删除你的容器和你的数据卷(这将清除你的数据卷中的任何数据)。 在下一个docker-compose up ,你应该看到它使用主机卷。

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