docker容器挂载目录 文件不同步问题
作者:matrix 被围观: 24 次 发布时间:2025-02-28 分类:零零星星 | 无评论 »
如果用nginx docker容器挂载了前端打包后的文件,前端项目重新build之后可能会出现文件不同步的问题
像这样挂载:
docker run --restart=always -d --name suworld-nginx \
-v /root/suworld-admin/dist/:/data/wwwroot/dist/ \
-p 80:80 -p 443:443 nginx
打包生成的dist中文件变化过多,docker文件监听事件会丢失导致容器中挂载的dist目录为空,必须重启容器才能临时解决~
解决方案
每次都要重启容器还是太麻烦了,好在挂载参数delegated
可以控制文件同步模式
docker run --restart=always -d --name suworld-nginx \
-v /root/suworld-admin/dist/:/data/wwwroot/dist/:ro,delegated \
-p 80:80 -p 443:443 nginx
说明:
ro
表示只读
delegated
模式:
主机上的更改会更快地反映到容器中
降低了主机和容器之间的同步开销
适合这种单向更新(主机 -> 容器)的场景
delegated
:更激进的缓存策略,性能最好,但可能有稍长的同步延迟
cached
:较温和的缓存策略,同步更及时,但性能略低
参考:
https://alvinhu.com/archives/22/