Vagrant 重新加载同步文件夹。

7

这是我的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

我已经成功地使用我的虚拟机,但我需要将 web.vm.synced_folder "./web/", "/srv/" 更改为其他路径。我尝试更改它,然后执行 vagrant reloadvagrant provisionvagrant reload web --provision 和所有其他可能的变体,但这些操作都没有效果。更改同步文件夹的唯一方法是销毁虚拟机并重新启动它。这不是我想要的。我需要在不销毁虚拟机的情况下重新加载配置,这就是我的问题所在,它对我不起作用。
3个回答

6
这并不是我在同步文件夹方面的经历,所以你看到这种行为非常奇怪。从Vagrant文档中可以得知...

同步文件夹会在 vagrant up 和 vagrant reload 期间自动设置。

我刚刚测试了我的一个Vagrant虚拟机,它运行良好。我更改了本地文件夹,执行了vagrant reload,然后在该虚拟机上查看了它。更改远程文件夹后也是如此。

根据你的情况,你可以尝试一种选项。你可以尝试禁用同步文件夹,运行 vagrant reload,然后更新并重新启用它,再次运行vagrant reload。以下是禁用同步文件夹的方法...

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

或者你可以注释掉这行代码,运行vagrant reload,然后再取消注释并修改它,最后再次运行vagrant reload

我无法保证这些方法是否有效,因为我无法重现你的问题。对我来说,它总是有效的。


运行“update”是什么意思?我已经使用禁用的vagrant up,多次vagrant halt,删除了未使用的boxes,但它仍然试图使用错误的文件夹... :@ - OZZIE

0

为了使文件夹完全同步,您需要在VBox中添加额外的VBoxGuestAdditions。文件夹将与主机持续同步,因此可以从主机和客户端观察到对文件的修改。请参见https://www.virtualbox.org/manual/ch04.html


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接