docker挂载数据库,本地无表结构的解决方案
博主遇到的场景:
首先是执行了一个用于构建镜像的脚本,然后通过docker-compose
批量启动容器,其中一个容器挂载了数据库文件(持久化操作):
volume:
./data/test.db:/tmp/db/test.db
报错结果表示,本地挂载后的数据库文件没有相应的表结构,会导致读写错误。
解决方案:
在镜像构建成功之后,在docker-compose
启动容器之前cp
数据库文件到本地。也就是在脚本中根据构建好的镜像启动一个指定名称
的容器,copy数据库文件到指定路径
,然后再删除掉这个容器。
docker run -itd --name temp_container /bin/bash
docker cp temp_container:/tmp/db/test.db ./data/test.db
docker rm -f temp_container