如何在 vagrant box 中打包同步文件夹

How to package synced folder in vagrant box

目前我想要的和实现的: 我想创建一个自定义的 vagrant box,包括一个配置和一个应用程序,以便在不同的客户端或服务环境中重用它。

具体来说,我设法基于 Ubuntu (precise/64) 创建了 vagrant box,它安装了 node.js,并使用

将其打包到我的开发机器上

vagrant package my-box --output filename.box

我可以将 filename.box 复制到远程服务器并 vagrant up 那里的盒子。 Node.js 按预期安装在 vagrant box 中。

问题 是,我无法将文件打包到同步文件夹 vagrant 中。在远程服务器上启动box后,同步的文件夹是空的

因此我在本地机器上开发的应用程序不包含在包装盒中。

我试图找到解决方案或有关此行为的任何信息,但除了 this unanswered Post 我在网上找不到任何东西。

我的问题:

  1. 如何保留同步文件夹中的文件并将它们打包到 filename.box 以便在服务器环境中重复使用。
  2. 这可能吗?我看到的行为是错误还是 Vagrant 也不打算打包文件?
  3. 到目前为止,我没有对同步文件夹进行任何配置。是否可以从与常规 /vagrant 不同的同步文件夹中打包文件?
  4. 如果这根本不可能,那么部署或重用包括应用程序在内的流浪环境的最佳实践是什么?

1-3) 不。这是不可能的,也不打算按照您期望的方式工作。 将 VirtualBox 的共享文件夹视为远程计算机上的已安装卷。它不是虚拟机文件系统的一部分。实际数据保存在主机上,而不是虚拟机上。

4) 如果您想将数据添加到您的盒子中,只需在打包之前将您的数据复制到虚拟机即可。无需使用共享文件夹。

你不能打包一个同步的文件夹,但你想要的是绝对可以的。

完成此操作的最简单方法是将数据放在盒子中的某个其他目录中(从而确保它与盒子一起打包)。并在 Vagrant box 配置期间,将数据移动或复制到同步目录。

盒子启动后 运行,同步目录将包含您想要的文件。