如何本地添加 vagrant 本地boxbox

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
Vagrant让虚拟化技术走近寻常家。脚踏实地地说,网络上类似“两分钟入门”的文章有不少,但求助各种问题的帖子更多,因为vagrant官网的文档太简洁了,这里头有些道理有些坑,都没涉及到。即便是O’Reilly两天前出版的 《Vagrant: Up and Running》 也含糊着某些问题。因而在Google了各种的前人零碎经验的基础上、以自己实践证明之后,有了我这篇文章,希望对涉及到的这些问题能汇总知识做一个澄清,并给读者一个可操作的指导。
文章结构
vagrant 的便利
vagrant 怎么玩
vagrant 到底怎么玩
— vagrant 基础模板哪儿找
— 辨析 vagrant box | *.box文件 | VM | *.iso文件
— Vagrantfile 怎么配
——- [HOWTO] 指定要使用的vagrant box和设置VM名称
——- [HOWTO] 设置VM对宿主机和外部机器的网络连接
——- [HOWTO] 配置并启动VM后运行后续安装脚本
— VM上端口的可访问性
— 修改默认ssh端口
— 将VM打包成*.box文件前清理网络设置上的障碍
— 设置共享目录位置与读写权限
— 多个VM的配置和启动
vagrant 的便利
打造Virtual Machine的过程中可放手做尝试,反复从某个基础模板开始安装或设置。可快速推倒重来,可步步为营。
可快速在一台宿主机上搭建多VM的EndToEnd环境。
管理开发环境,可脚本化复制、操纵等行为,提高自动化程度。
vagrant 怎么玩
简单点说,三步走:
安装 vagrant 、VM软件( Virtualbox 是主流,后文也默认以此为例)
给vagrant添加基础模板(box)
配置Vagrantfile后用vagrant启动VM
满共就三个命令,有些人玩到这就觉得已经伟大的不得了了,至此ssh上VM各种虐。
你还差得远 !
vagrant 到底怎么玩
vagrant 基础模板哪儿找
www.vagrantbox.es 介绍了vagrant的基础模板,并提供了满足各种需求的*.box文件供下载。
推荐选择 minimal + guest additions + puppet|chef 的box,理由:
小,就意味着资源占用少
Virtualbox共享目录需要guest additions
预装puppet或chef并非必选。它们对未来提升VM配置自动化有好处,本身不大
辨析 vagrant box | *.box文件 | VM | *.iso文件
解释词汇:
打包了操作系统的 *.iso文件 是无法被vagrant直接使用的
VM 是可启动/已启动的虚拟机
*.box文件 是vagrant可接受的基础模板文件
vagrant box 指vagrant已安装好的基础模板
辨析关系:
*.iso文件 可经Virtualbox界面的手动安装得到可启动的 VM
VM 可被vagrant package命令打包成为 *.box文件
*.box文件 可被vagrant box add命令安装为 vagrant box
vagrant box 可被vagrant在Vagrantfile中指定为 VM 运行的基础模板
Vagrantfile 怎么配
Vagrantfile是vagrant配置VM的起点, 官方文档 里零零散散的说明让我明白了“东西很简单,但找对不容易”这句话。
对Vagrantfile,有几个常问 HOWTO :
指定要使用的vagrant box和设置VM名称
设置VM对宿主机和外部机器的网络连接
配置并启动VM后运行后续安装脚本
[HOWTO] 指定要使用的vagrant box和设置VM名称
一看便知。
Vagrant.configure("2") do |config|&&&&& # ‘2’的意思是我所用的vagrant-1.2.2属于内部v2版
& config.vm.define :web do |web_config| # 设置此VM名称为web
&&& web_config.vm.box = "apache-centos" # 指定使用已安装的名为“apache-centos”的vagrant box
& end
end
参考
[HOWTO] 设置VM对宿主机和外部机器的网络连接
当VM只与宿主机通信时,可设置为私有网络,等效于设置virtualbox使用host-only模式网络适配器。
config.vm.network :private_network, ip: "192.168.50.4"
当寄宿与同一宿主机上的多台VM之间也需相互通信时,设置各VM为私有网络,但将固定IP设为同一网段。
当VM需要与宿主机网络内的其他机器通信时,设置为公开网络,等效于设置virtualbox使用bridged模式网络适配器,默认DHCP获取地址。
config.vm.network :public_network&& # vagrant-1.2.2之后的版本可能改用 :bridged
参考
[HOWTO] 配置并启动VM后运行后续安装脚本
追求简单,那么下面两条配置其一就够用了
config.vm.provision :shell, :inline =& "ifconfig"& # inline script
config.vm.provision :shell, :path =& "initialize.sh"& # external script
不得不复杂时, Chef / Puppet / Ansible 都是可供你用的。细致配置见 参考 。
自动化部署是好的,但如果是VM每次安装固定软件,那么就不必了。大可以将不变的软件安装配置完成后,将VM打包成为*.box文件静态化,以后以此box文件作为基础模板做进一步配置。步步为营的提升基础的实践,会加速VM搭建过程并减少配置脚本。
疑难杂症
VM上端口的可访问性
尤其对不连外网的VM,我们辛苦建了它却不能访问它的端口,那要它何用?防火墙是阻止端口访问的罪魁,索性关了它吧。
Centos/Redhat/Fedora 用iptables管理firewall,所以两个办法搞掉它
停掉iptables的服务, 参考
$ sudo service iptables save
$ sudo service iptables stop
$ sudo iptables off
索性干掉iptables的所有规则, 参考
$ sudo iptables -F
$ sudo iptables -X
$ sudo service iptables save
Ubuntu 用ufw管理firewall,关掉它就是了, 参考
$ sudo ufw disable
修改默认ssh端口
场景
ssh端口默认22,那位说“为什么我要改它呢”,我例举一个场景:
假如你要开发一个包含SFTP server的应用。为了给使用者提供便利,你最好保留22端口给用户,使他能使用默认方式通过SFTP传文件。同时,你要将这个应用部署到VM上做测试,那么VM的ssh login就不能同时也用22端口了,你需要为它指定新端口,如 10022。
难点
难点在于下面的约束条件:
原有VM的基础模板默认使用22端口,所以vagrant 不能 一开始就弃用22端口,否则VM无法访问。
VM上ssh端口的改变为新端口后,再重启VM前 需要 更改Vagrantfile以选用新端口。
vagrant ssh命令 并不 直接访问VM的ssh端口,而是通过访问宿主机的22XX端口来间接ssh login到VM上。
vagrant内置了从宿主机22XX端口向VM的22端口的映射,如果VM的新端口并没有被指定映射到宿主机的某个端口上,vagrant ssh命令 仍会 访问原来的宿主机22XX端口即VM的22端口。(vagrant选择22XX端口时的尝试路线是:2222 -& 2201 -& 2202 -& 2203 -& … ,以此保证多台VM启动时不会有端口冲突。)
坑是挺多的吧?Vagrantfile的 ssh settings参考 和 forwarded ports参考 可没把这事儿说这么清楚。
行动大纲
解决问题须要分几步走:
预先在Vagrantfile中为VM的新端口做端口映射
VM上修改ssh使用的端口到新端口
在Vagrantfile中指定ssh login时使用VM的新端口
[非必做] 建立新基础模板以固化上述更改
按步骤走起
Step1: 在Vagrantfile中为VM的新端口做端口映射
config.vm.network :forwarded_port, guest: 10022, host: 2255
# config.ssh.port = 2255&&&&&&&&&&& # port of host& # commented in step1
# config.ssh.guest_port = 10022&&&& # port of VM&&& # commented in step1
Step2: VM上修改ssh使用的端口到新端口
VM上将22端口换为10022端口:vi编辑sshd_config文件( Centos/Ubuntu: /etc/ssh/sshd_config ;Mac OS X: /etc/sshd_config )
& :%s/#Port 22/Port 10022/g
& :wq
重启sshd服务
& $ sudo service sshd restart
Step3: 在Vagrantfile中指定ssh login时使用VM的新端口
config.vm.network :forwarded_port, guest: 10022, host: 2255
config.ssh.port = 2255&&&&&&&&& # port of host& # uncommented in step3
config.ssh.guest_port = 10022&& # port of VM&&& # uncommented in step3
Step4 [optional]: 建立新基础模板以固化上述更改
使用vagrant package命令将改过端口的VM保存为box文件。由这个新基础模板所产生的VM中,10022即为ssh访问端口,使用上述的Vagrantfile可直接通过vagrant ssh访问。
vagrant package &vm-name& --output &new-base.box&
生成新*.box文件前须清理网络设置上的障碍。详见下文。
将VM打包成*.box文件前清理网络设置上的障碍
将手动配置过的VM重新打包生成*.box文件作为新基础模板,在这件事上对linux-based的VM有个关于网络设置的障碍。
问题表现
例如设置了private network(等同于virtualbox设置host-only模式的网络适配器)的VM,若不做准备而直接使用vagrant package生成新box文件,那么安装此box文件到vagrant box后在启动VM时,会发现当前Vagrantfile指定的private network配置失败。
[default] Configuring and enabling network interfaces…
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifup eth1 2& /dev/null
被启动的VM以让可以通过vagrant ssh命令去访问,但网络配置上却没有host-only模式的适配器。
分析解决
还记得配置private network时设置的固定ip地址么?是的,问题就在持久网络设备udev规则(persistent network device udev rules)是被原VM设置好的,再用box生成新VM时,这些rules需要被更新。而这和Vagrantfile里对新VM设置private network的指令发生冲突。
既然以后在Vagrantfile里显示地设置private network ip是免不了的,那么只要在生成box文件前干掉udev规则就是了。
sudo rm -f /etc/udev/rule.d/70-persistent-net.rules
题外话
有趣的是这篇 参考 细述了这个问题的因果与对策,反倒是O’Reilly出版的 《Vagrant: Up and Running》 一书中(第6章)对此含糊带过。
该书计划于日出版。试读版中尚仍有对过时命令的介绍(如“repackage”),希望正书出来了不会立即过时。
学习的话, 官网文档 还是应该对照的。
设置共享目录位置与读写权限
Virtualbox共享目录需要VM上装有Guest Additions。自己安装到VM再打包成box文件做基础模板,或者一开始就找好合适的box文件(前文提到过),随便你怎么整好。
vagrant 默认将宿主机上Vagrantfile所载目录共享至VM上的 /vagrant 目录。
我们常需要的是指定共享某个目录,为此vagrant 支持两种方式:
简单:vboxsf
vboxsf是 V irtual boxS hared F older(或 VboxS hared F older)的缩写。很多人知道可以指定vboxsf作类型来mount,却不知这个这个词全称,甚至误解为“虚拟机文件系统”而错写成vboxfs。
vagrant默认使用这种方式共享目录。优点方便,缺点是性能不好。配置时,只要在Vagrantfile里指明:
config.vm.synced_folder "path/on/host", "/absolute/path/on/vm"
前一个参数须是宿主机上已存在的目录,若为相对目录,那是相对Vagrantfile所在目录。
后一个参数须是VM上的绝对路径,若不存在,vagrant会在启动VM时建好,多层的目录也没关系。
正经:NFS
NFS是正途,不过它也挑剔。
vagrant 内置了宿主机和VM两端对NFS的支持与配置的协调。如果你用windows,那vagrant当作你的配置不存在,直接忽略(我也觉得你在瞎胡闹)。Vagrantfile里很容易,标上标记就行了:
config.vm.synced_folder "path/on/host", "/absolute/path/on/vm", :nfs =& true
两个目录可以一样,如都用 “/shared” ,藉此建立多个机器节点的共享存储了。
NFS的共享目录这种方式的挑剔之处在于目录内的读写权限。
读写权限
以建立宿主机与VM的共享存储这个应用场景为例,目标是:
两端对共享目录( /shared )的读写无限制
没有root权限的麻烦
如果你在宿主机建 /shared ,然后直接配置关联,那对上述两个目标你都会失败。按我说的步骤来吧:
宿主机上将建立的共享目录改为可读写
$ sudo chmod o+w /shared
设置为non-root用户所有
$ sudo chown &user&:&group& /shared
配置了Vagrantfile后启动VM
config.vm.synced_folder "/shared", "/shared", :nfs =& true
这样得到的共享目录对场景设定的目标已大功告成了:
在宿主机和VM两端都它都不是root用户所有
宿主机上 /shared 属于例如twer用户。
VM上 /shared 所属的用户会是个数字,如1000。
在宿主机和VM两端它都对读写无限制
多个VM的配置和启动
单Vagrantfile vs 多Vagrantfile
虽然vagrant支持在一个Vagrantfile中配置多个VM,但我个人喜欢为各VM写各自的Vagrantfile。
一来,各个VM的配置和启动都相对独立,如vagrant ssh时可不指定VM名,用默认。
二来,Vagrantfile也不至于常常要改。
不过真正的牛人没我这么小家子气。用统一的一个Vagrantfile来管理多个VM,从大局着眼确是有好处的:
一个Vagrantfile收录了整个大环境中所有VM的基本配置,维持了虚拟网络的上下文完成。你一眼就知道环境里共有哪些VM,也不需要切换目录来检查各VM的状态,跟不会搞混了目录“丢掉”哪个倒霉的VM。
更多地使用Chef/Puppet来配置各VM,比如把VM的ip配置从Vagrantfile后推到puppet进行,保持Vagrantfile的简洁。目的是在对本地环境的VM配置与E2E环境(甚至生产环境)的节点配置上,保持较高的一致性,有利于统一部署方式。
浏览: 12738 次
bitray 写道jdk不是保持向下兼容的嘛?为什么升级以后其 ...
bitray 写道jdk不是保持向下兼容的嘛?为什么升级以后其 ...
jdk不是保持向下兼容的嘛?为什么升级以后其他的应用也需要变化 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
Last login: Sat Jan 23 14:35:58 on console
duncandeMini:~ duncan$ cd H
Homestead/
duncandeMini:~ duncan$ cd Homestead/
duncandeMini:Homestead duncan$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==& default: Box 'laravel/homestead' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: &= 0.4.0
==& default: Loading metadata for box 'laravel/homestead'
default: URL: /laravel/homestead
==& default: Adding box 'laravel/homestead' (v0.4.0) for provider: virtualbox
default: Downloading: /laravel/boxes/homestead/versions/0.4.0/providers/virtualbox.box
==& default: Box download is resuming from prior download progress
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
HTTP server doesn't seem to support byte ranges. Cannot resume.
duncandeMini:Homestead duncan$ vagrant box list
laravel/homestead (virtualbox, 0)
duncandeMini:Homestead duncan$
我已经wget box回来了,在本地vagrant box add完毕。然后根据中说的配置好了Homestead,在Homestead下面执行vagrant up出现了这个问题:无法读取已经添加的box。
然后查了一下,说先要 vagrant init 一下,接着出现:
duncandeMini:Homestead duncan$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==& default: Importing base box 'laravel/homestead'...
==& default: Matching MAC address for NAT networking...
==& default: Setting the name of the VM: Homestead_default_0_94944
==& default: Clearing any previously set network interfaces...
==& default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==& default: Forwarding ports...
default: 22 =& 2222 (adapter 1)
==& default: Booting VM...
==& default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==& default: Machine booted and ready!
==& default: Checking for guest additions in VM...
==& default: Mounting shared folders...
default: /vagrant =& /Users/duncan/Homestead
duncandeMini:Homestead duncan$
分析了一下,对比了一下Vagrantfile,发现没有init前是包含过了 .homestead/Homestead.yaml的相关配置
而init后貌似木有描述到这个配置了?但是指定了本地box不再去网络上获取
我猜测是这里配置出问题了,试着自己把两个配置结合在一起,然后再去vagrant up,但是一直出错,实在不知道如何设置了,所以来当一把伸手党,请教一下用vagrant做开发环境的大神们。
请问如何才能解决这个问题呢?
windows 和 osx 上都出现了这个问题
附加上Homestead.yaml的内容:
ip: "192.168.10.10"
memory: 2048
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
- ~/.ssh/id_rsa
- map: ~/Code
to: /home/www
- map: homestead.app
to: /home/vagrant/www/public
databases:
- homestead
# blackfire:
token: bar
client-id: foo
client-token: bar
- send: 50000
- send: 7777
protocol: udp
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我也遇到这个问题了,搞了两天,看到你这里,才解决,真是太感谢了,谢谢分享!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
搞掂了。 这个问题是因为Homestead更新为最新版本为0.4.0了。
用wget下载回来的virtualbox.box虽然是0.4的,但是在vagrant box list 中显示为 0 在下载回来的homestead默认的配置中就会出现错误。
在clone回来的Homestead\scripts\文件夹中,打开homestead.rb文件
config.vm.box_version = settings["version"] ||= "&= 0.4.0"
config.vm.box_version = settings["version"] ||= "&= 0"
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:Windows下修改 Vagrant Box 加载目录 - zvv
Windows下修改 Vagrant Box 加载目录
October 19, 2016
在Vagrant中添加box时,加载目录默认在 ~/.vagrant.d/,具体的目录结构是C:\Users\Your Username\.vagrant.d\,由于是在C盘中,在一些配置不高的机子中用起Vagrant,磁盘容量会显得捉襟见肘,这时会考虑更改加载box的目录。查阅后发现相关的环境变量是VAGRANT_HOME,在Windows下设置环境变量并不是很熟悉,Google了一下在找到了方法。永久设置环境变量
永久设置用户的环境变量
setx VAGRANT_HOME "/your/path"
永久设置系统的环境变量
setx VAGRANT_HOME "/your/path" /M
临时设置环境变量这样的方式只是临时性地将环境变量写入session,每次要打开新终端执行vagrant相关命令如重启关闭销毁等命令之前都需要敲设置一遍
set VAGRANT_HOME="/your/path"
对于以上设置的环境变量可以在注册表中查看和修改,在注册表中相应的结构树是HKEY_CURRENT_USER/Environment按照上面的方法就可以修改Vagrant的加载目录了,此外,如果C盘容量还是不够用的话可以考虑修改新建虚拟机文件的默认生成路径,我用的是 VirtualBox,具体操作是打开VirtualBox,在菜单中选择管理-&全局设定(或者直接按Ctrl+G)打开面板,修改默认虚拟电脑位置的路径即可,指的一提的是,上述提到的虚拟机生成路径在新建虚拟机的过程中是可以指定的。、 via.http://urouge.github.io/how-to-change-vagrant-box-directory-in-Windows/
添加新评论参考文章:http://blog.smdcn.net/article/1308.html
准备工作:
下载安装 VirtualBox :
下载安装 Vagrant :
下载需要使用的 box :
官方提供的范例:/precise32.box
还可以在&&这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。
设置环境:
第一步,新建目录
mkdir -p vagrant/debiancd vagrant/debian
第二步,初始化文件
vagrant box add debian-local /home/wangkongming/software/pmv3.box
debian-local 表示指定默认的box,也可以为box指定名称,比如 debian ,使用base时,之后可以直接使用 vagrant init 进行初始化,如果自行指定名称,则初始化的时候需要指定box的名称。
pmv3.box 是box对应的文件名,这里可以是本地保存box的路径,也可以是可以下载box的网址,如果是网址的话,Vagrant会自动启动下载。
设置好box之后,在当前工作目录运行
vagrant init
生成对应的Vagrantfile。通过文本编辑器打开Vagrantfile可以进行一些进一步的常用配置:
网络配置:
Vagrant的网络有三种模式
1、较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:
config.vm.network :forwarded_port, guest: 80, host: 8080
guest: 80 表示虚拟机中的80端口,&host: 8080 表示映射到宿主机的8080端口。
2、如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP&,在Vagrantfile中配置:
config.vm.network :private_network, ip: "192.168.1.104"
192.168.1.104 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可
3、如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:
config.vm.network :public_network
目录映射:
既然是开发环境,那么开发工作肯定还是需要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就好了,不然就本末倒置了,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。
默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件可以直接在 /vagrant 下进行访问,当然也可以在通过 ln 创建软连接,如
ln -fs /vagrant/wwwroot /var/www
来进行目录映射,当然,从自动化配置的角度,能不进系统就不需要进系统,所以在Vagrant也可以进行目录映射的操作:
config.vm.synced_folder "wwwroot/", "/var/www"
前面的参数 &wwwroot/& &表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: &d:/www/&
后面的参数 &/var/www& 表示虚拟机中对应映射的目录。
在不进入虚拟机的情况下,还可以使用下面的命令对 虚拟机进行管理:
vagrant up&(启动虚拟机)vagrant halt&(关闭虚拟机&&对应就是关机)vagrant suspend&(暂停虚拟机&&只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)vagrant resume&(恢复虚拟机 && 与前面的暂停相对应)vagrant destroy&(删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)
当在启动Vagrant后,对于虚拟机有进行过安装环境相关的配置,如果并不希望写在Vagrant的启动shell里面每次都重新安装配置一遍,可以将当前配置好的虚拟机打包成box,
vagrant package --output NAME --vagrantfile FILE
可选参数:
--output NAME : (可选)设置通过NAME来指定输出的文件名
--vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中
注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:
sudo rm -f /etc/udev/rule.d/70-persistent-net.rules
制作完成之后直接将box文件拿到其他计算机上配置即可使用。
更多信息可以参考官方文档:
附:我本机上的vagrantfile文件
Vagrant.configure(2) do |config|
config.vm.box = "debian-local"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.1.88"
config.vm.synced_folder "/home/wangkongming/files/works/code/kfz-pm", "/data/webroot/pmv2"
阅读(...) 评论()}

我要回帖

更多关于 vagrant virtualbox 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信