bind mounts 适合需要持久化且会进行实时编辑的内容,例如项目代码。

在Linux和Mac中需要设置根目录的共享权限,以让docker能够对其子目录也就是你要绑定的目录进行读写。

绑定目录到容器中

docker run -v E:\Study\docker\dockerLearning:/app feedback:volumes

会将 E:\Study\docker\dockerLearning 下的所有内容替换掉 /app 下的内容,这将意味着 /app 的内容会始终与本机目录文件一致。

因此当在 dockerfile 中进行依赖安装后,如果绑定整个项目到容器中,会导致已经被安装的依赖由于容器内整个目录与本机目录同步而丢失。

除了将一个一个必须绑定的东西单独绑定之外,还可以通过设定临时Volume来保留依赖,进而优雅地解决(因为依赖往往只有一个文件夹)。

如果想要实现代码热重载,还需要自己添加项目的开发插件,其能够自动抓取文件修订并重启服务器。Windows 使用 WSL2 会出现插件无法检测到 windows 目录的更改,其只会检测到 WSL2 中内部的linux 文件系统的更改,需要手动去访问然后修改