Mysql容器数据持久性,dockerfile
我使用这个docker compose脚本创建了两个容器,其中一个是Mysql实例 我是新手,所以如果这听起来很愚蠢,我很抱歉,但我肯定我在这里犯了一些错误 这是我的撰写文件,我看过其他文章,似乎这是装载卷的方法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
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