vagrant + virtualbox搭建一个可移动的开发环境

前言

在日常开发中可能会遇到这样的问题

  • 新入职第一天不是在熟悉公司项目,而是在安装开发环境(搭建开发环境耗时)
  • 在本地开发完一个功能,测试没问题,而部署到服务器上就跑不起来了(环境不一致)
  • 在调试某个功能时发现自己这边跑不通,而同事那边没问题(环境不一致)

vagrant+virtualbox 的出现,成功的解决了搭建开发环境耗时且不一致的问题

  • vagrant box镜像同时支持Windows、Mac和Linux
  • 一次安装,快速分发 可以给新入职的同事分分钟部署一个和大家一样的开发环境
  • 使用简单
    vagrant up ⬅️启动虚拟机
    vagrant ssh ⬅️登陆虚拟机
    vagrant reload ⬅️重载虚拟机,Vagrantfile文件有修改了才需要
    vagrant halt ⬅️关闭虚拟机

    安装

    #下载box
    http://www.vagrantbox.es
    https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
    #进入项目目录(虚拟机启动后系统自动挂载该目录到/vagrant)
    cd PhpstormProjects
    #添加本地box
    vagrant box add {title} ../vagrant_package/CentOS-7.1.1503-x86_64-netboot.box
    #初始化(在项目目录生成Vagrantfile文件1️⃣
    vagrant init {title}
    #启动
    vagrant up
    #连接
    vagrant ssh
    #登陆虚拟机后就可以安装自己需要的软件了,和普通服务器操作一致
    #搭建一个和服务器一致的开发环境

    备份

    #进入项目目录
    cd PhpstormProjects
    #打包(会在当前目录生成一个package.box,根据个人需要把它移动到合适目录)
    vagrant package

    恢复备份

    #box列表,查看已有的box
    vagrant box list
    #移除名称为php的box(box移除后,还需要手动删除virtualBox中的虚拟机)
    vagrant box remove php
    #恢复备份过的box
    vagrant box add php ../vagrant_package/package-php.box
    #启动
    vagrant up

    附件

    1️⃣Vagrantfile文件实例

#vim: set ft=ruby ts=2 :

Vagrant.configure("2") do |config|
   config.vm.box = "php"
   #config.vm.network "forwarded_port", guest: 80, host: 8090
   config.vm.network "public_network",  ip:"192.168.1.88"

   config.vm.synced_folder "./", "/vagrant"
   config.vm.provider "virtualbox" do |v|
      v.memory = 2048
      v.cpus = 2
   end

   config.vm.provision "shell", run:"always", inline: <<-SHELL
   service nginx start
   SHELL
end

感谢阅读这篇文章,如果你喜欢,或者遇到了问题,可以关注我的公众号