这是一个可以在本地快速启动用于本地开发的虚拟机模板,可提供容器化环境、Java后端和前端编译工具等。开发人员可以得到一个与服务器环境一致的本地开发环境。
项目具有以下特点:
- 一致性体验:本地开发环境与生产环境一致,避免因环境差异导致的开发问题。
- 国内加速器:预配置 DNS 以及国内仓库和软件源。
本项目基于 Vagrant 和 VirtualBox 搭建,所以开发人员还是需要一些少量的软件安装工作。
- Vagrant: Vagrant | HashiCorp Developer
- VirtualBox:Downloads – Oracle VM VirtualBox
开发环境启动后会安装如下软件到虚拟机中:
| 软件/系统 | 默认版本 | 备注 |
|---|---|---|
| Vagrant Box 镜像 | bento/rockylinux-10 |
基础镜像,提供 Rocky Linux 9 操作系统 |
| OpenJDK | 21 | |
| Apache Maven | 3.9.12 | |
| Git | 2.47.3 | 版本控制 |
| CRI | N/A | 容器运行时: docker 或者 podman |
| Compose | N/A | 容器编排工具:docker compose 或者 podman compose |
| Node.js | 24.1.0 | 前端工具 |
devbox 中所安装的所有基础软件都可通过配置文件来控制是否要安装,配置文件路径为 config.properties,支持的选项及说明如下表所示。默认选项是全部禁用的,开发人员按需更改选项,如需启用,将选项值从 false 改为 true 即可。
提示:
true代表安装,false代表卸载。
| 选项 | 类型 | 含义 | 默认值 |
|---|---|---|---|
| logging.level | 字符串 | 日志级别,可选值有info, verbose ,debug |
info |
| setup.host.enabled | 布尔 | 是否配置主机名称 | false |
| setup.host.name | 字符串 | 主机名称 | example.com |
| installer.git.enabled | 布尔 | 是否安装 Git |
false |
| installer.openjdk.enabled | 布尔 | 是否安装 Open JDK |
false |
| installer.epel.enabled | 布尔 | 是否安装 EPEL |
false |
| installer.maven.enabled | 布尔 | 是否安装 Apache Maven |
false |
| installer.npm.enabled | 布尔 | 是否安装 Node.js | false |
| installer.container.enabled | 布尔 | 是否安装容器运行时 | false |
| installer.containert.runtime | 字符串 | 容器运行时:podman 或者 docker | docker |
以上选项既可以在一键启动命令 vagrant up 之前配置,也可以在其执行之后配置。在调整完之后,运行 vagrant provision 命令以生效配置。
启动命令很简单,按照 Vagrant 官方建议,只需要执行 vagrant up 即可一键启动,命令如下:
$ vagrant up提示:初次运行时由于开发人员本地还未下载任何 Vagrant 基础镜像文件,因此初次运行时会花费更多的时间来下载基础镜像。此处暂无国内环境下的提速方法,所以此时体验不佳。但随后的初始化过程由于使用了国内加速镜像站,速度上会有保障。
安装过程中会输出日志,最后会输出所有已安装成功的软件版本清单。在所有配置项均启用的时候,日志内容大致如下:
default: Running provisioner: shell...
default: Running: inline script
default: installer.container.enabled = true
default: installer.container.runtime = docker
default: installer.epel.enabled = false
default: installer.git.enabled = true
default: installer.maven.enabled = true
default: installer.maven.version = 3.9.12
default: installer.npm.enabled = true
default: installer.npm.version = 24.1.0
default: installer.openjdk.enabled = true
default: installer.openjdk.version = 21
default: logging.level = verbose
default: setup.host.enabled = false
default: setup.host.name = example.com
default: VERBOSE: (13) properties already cached.
default: [INFO] Installing node and npm...
default: VERBOSE: Downloading https://mirrors.aliyun.com/nodejs-release/v24.1.0/node-v24.1.0-linux-x64.tar.xz
default: VERBOSE: Extracting files to /opt...
default: VERBOSE: Setting up environment for PATH...
default: [INFO] Accelerating npm registry...
default: VERBOSE: Gathering facts for networks...
default: dns = 114.114.114.114,8.8.8.8,0.187.2.4,192.168.3.1,fd17:625c:f037:2::3
default: ip = 192.168.133.100
default: VERBOSE: Installation complete! Wrap it up...
default: CATEGORY NAME VALUE
default: --------- ---- -----
default: PROPERTY OS Rocky Linux release 10.0 (Red Quartz)
default: PROPERTY IP 192.168.133.100
default: PROPERTY DNS 114.114.114.114,8.8.8.8,0.187.2.4,192.168.3.1,fd17:625c:f037:2::3
default: --------- ---- -----
default: VERSION GIT 2.47.3
default: VERSION OPENJDK 21.0.9
default: VERSION MAVEN 3.9.12
default: VERSION PIP3 23.3.2
default: VERSION docker 29.1.3
default: VERSION NODE v24.1.0
default: VERSION NPM 11.3.0当前的开发环境提供了一个常用的置备器(Provisioner)来按需执行特定的任务。开发环境通过 vagrant up 启动成功之后,就可以通过 vagrant provision --provision-with <provisioner> 来运行置备器。
自定义自己的置备器,基本步骤如下:
- [必需] 在
provisioners目录下创建一个新的目录,目录名就是你自定义的置备器名称,例如my_provisioner。 - [可选] 在新目录下创建一个
config目录,用于存放置备器的配置文件。 - [必需] 在新目录下创建一个
provision.rb文件,用于定义置备器的运行环境和任务,例如:
# my_provisioner/provision.rb
# my_provisioner -> MyProvisioner
class MyProvisioner
@name = "my_provisioner"
@enabled = true
def provision(config)
config.vm.provision 'shell', inline: 'echo "Hello, World!"'
end
end之后运行:vagrant provision --provision-with "my_provisioner"