Mysql容器数据持久性,dockerfile

Mysql容器数据持久性,dockerfile,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我使用这个docker compose脚本创建了两个容器,其中一个是Mysql实例 我是新手,所以如果这听起来很愚蠢,我很抱歉,但我肯定我在这里犯了一些错误 这是我的撰写文件,我看过其他文章,似乎这是装载卷的方法 version: '3.1' services: db: container_name: mysql image: mysql:latest command: --default-authentication-plugin=mysql_native_pa

我使用这个docker compose脚本创建了两个容器,其中一个是Mysql实例

我是新手,所以如果这听起来很愚蠢,我很抱歉,但我肯定我在这里犯了一些错误

这是我的撰写文件,我看过其他文章,似乎这是装载卷的方法

version: '3.1'

services:

  db:
    container_name: mysql
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - 3002:3306
    expose:
      - '3306'

    volumes:
      - "c:/dockerData/mysql:/var/lib/mysql"

    environment:
      MYSQL_ROOT_PASSWORD: xxx
      MYSQL_DATABASE: xxx
      MYSQL_USER: xxx
      MYSQL_PASSWORD: xxx
我正在我的笔记本电脑上测试一切,每当我重新启动docker或我发送docker compose down(再次向上广告)时,表就会消失,我只会发现一个数据库上没有任何内容。所有表当前都存储在卷的主机文件夹中,但数据库不再使用这些表

我在另一个容器中所做的一切(以相同的持久性进行节点连接)都能正常工作 很好,每次修改都正确存储

我错过什么了吗


谢谢:)

您可以检查
c:/dockerData/mysql
,查看容器启动时文件是否正确生成


如果数据文件仅在下次启动容器时消失,这意味着您有一个启动脚本,该脚本在启动时删除/创建数据库。

文件夹中存在数据,但每次我关闭电脑或关闭compose swarm时,数据库似乎都是从头开始创建的,显示数据库,但不显示表(保存在结构database/table.ibd中),我在linux服务器上对其进行了本地测试,它工作正常,第一次启动时,您会在日志中看到“mysql | initialization database”,但在随后的任何重启中都不会看到,我认为这不是您的情况。因此,我假设这与Windows卷装载有关,请尝试将卷行更改为:volumes:-C:\dockerData\mysql:/var/lib/mysql:rw