流浪者重新加载 synced_folder

vagrant reload synced_folder

这是我的 Vagrantfile。

config.vm.define :web do |web|
 web.vm.box = "ubuntu/trusty64"
 web.vm.network "private_network", ip: "192.168.100.111"
 web.vm.network "forwarded_port", guest: 22, host: 4444,  id: "ssh", auto_correct: true  
 web.vm.synced_folder "./web/", "/srv/"

web.vm.provider "virtualbox" do |vb|
 vb.gui = true
 vb.name = "web"
 vb.cpus = 2     
 vb.memory = "1024"
end
end

我的 VM 工作正常,但我需要将 web.vm.synced_folder "./web/", "/srv/" 更改为其他路径。我尝试更改它,而不是 vagrant reloadvagrant provisionvagrant reload web --provision、以及所有其他可能的变体。这些动作不会有效果。更改同步文件夹的唯一方法是销毁 VM 并重新启动它。这不是我想要的。我需要在不破坏 VM 的情况下重新加载配置,这就是它对我不起作用的问题。

这不是我使用同步文件夹的经验,所以您看到这种行为很奇怪。从 Vagrant docs...

Synced folders are automatically setup during vagrant up and vagrant reload.

我刚刚用我的一个 Vagrant 盒子对其进行了测试,它运行良好。我更改了本地文件夹,做了一个vagrant reload,然后在框上进行了检查。更改远程文件夹后同上。

鉴于您的情况,您可以尝试一个选项。您可以禁用同步文件夹,运行 vagrant reload,更新并 re-enable 它,然后再次 vagrant reload。以下是禁用同步文件夹的方法...

web.vm.synced_folder "./web/", "/srv/", disabled: true

或者您可以注释行 运行 vagrant reload,取消注释并更改它,然后再次 vagrant reload

我不能保证这些方法,因为我无法重现您的问题。无论如何,它对我有用。

您需要将额外的 VBoxGuesstAdditions 添加到您的 VBox 才能拥有完全同步的文件夹。文件夹将与您的主机持续同步,因此主机和来宾都可以观察到对主机和来宾文件的修改。参见 https://www.virtualbox.org/manual/ch04.html

我遇到了类似的问题,在我的情况下,通过确保主机上仍然存在以前的文件夹来解决问题。否则,我会收到一个错误,指出它不存在(它不存在,因为这就是为什么我想使用不同的主机文件夹!)。