之前的项目使用的 VM 已经都装好了各种依赖等等。现在又有一个项目,我把原来项目的Vagrantfile
拷贝到新的项目下,使用vagrant up
,然后vagrant ssh
进入之后发现,竟然是一个新的 VM。我在原来的 VM 中安装、配置的各种东西都没有了。难道还要重新安装一遍?多浪费时间,浪费电脑磁盘空间啊!!
请问:能否修改一下配置等,使得在不同目录(项目)的 vagrant 指定到同一个 VM 下?
vagrant 的 box 跟你启动的 VM 好比类跟实例的关系。你新项目的 VM 跟你以前的 VM 是同一个 box 类的两个实例,所以你第一个 VM 装东西不会出现在第二个 VM 上。
#4 楼 @piecehealth 谢谢!
恩,这个方法确实可以。但是,这个方法还是会存在两个 VM。我想要的是一个 VM,可以让两个不同项目指定到同一 VM。
单纯导 Vagrantfile 是不够的,如果你真的需要用同一个虚拟机的话,
你的 vagrantfile 同级目录下会有.vagrant/machines/default/virtualbox/id 这个文件 用同一个虚拟机的 id 就可以了.
虚拟机的 id 在$user_home/VirtualBox VMs/xxxx/xxxx .vbox 文件
<Machine uuid="{*******-****-***-***-*********}"
这个 uuid 就是...
切记:切换工作目录前需要重启 vagrant. 所以如果环境差异不大,要多个项目使用同一个虚拟机更好的办法是把 Vagrantfile 放项目的上级目录
把 Vagrantfile 以及 provision 脚本作为一个单独项目 然后 project 都放 share_folder 怎么样,也不用给每个项目加一个 Vagrantfile 了
楼主别坑自己了。这种需求就属于自己挖一个坑给自己跳。
#1 楼 @piecehealth 和 #9 楼 @krazy 的这两种做法都是 OK 的
难度递增,但是坑的深度递减 (后者好像没看到坑 lol).
@ruohanc 后者就是不支持 inotify~ 用 guard 什么的还得用 polling 模式 vagrant1.5 出来用 rsync 似乎就能解决了... 试过装个 vagrant-exec 插件,就可以在 host 执行 guest 命令再配个 alias,基本就可以感觉不到虚拟机的存在了...
楼主,可以用 vagrant + docker,把你配置好的环境,生成一个 docker images,就可以共用了。我目前正在用这种方式。只需要用一个 VM 就可以了。