背景
项目需要读取本地的一个文件,采用的方式是挂载本地目录作为volume。但是在将这个项目部署到远端服务器时,项目image可以直接拉取,而项目所需文件的迁移就成了问题
解决方案
- 创建一个专门用于
COPY数据的image,起名为data-image:1.0 - 接着就可以远程访问服务器,创建
docker-compose.yml文件,通过挂载volume的方式实现数据共享 - 到此为止就可以拉取镜像、启动服务了
1 | # Dockerfile |
1 | # docker-compose.yml |
总结
- 只有
volume可以做到数据持久化,image内的数据是无法被更改的 - 当项目启动后对依赖文件的改动会被记录在
project-data中,而两个image中/usr/src/data目录下的内容会一直保持它们最开始的状态 - 启动服务后,
project-data会被挂载到两个container上,实现数据的共享,这个时候两个container中/usr/src/data目录下的内容与project-data同步 - 如果删除了
project-data,则对依赖文件的改动会丢失