这是一个用于测试 Sealos DevBox 各种运行时环境的测试框架。每个运行时环境都有对应的测试项目,支持中文和英文两种语言版本。
DevBoxRuntimeTest/
├── test.sh # 主测试脚本
├── runtime_list.md # 运行时镜像列表
├── README.md # 本文件
│
├── GO/ # Go 运行时
│ ├── 1.22.5/
│ │ ├── en/ # 英文版
│ │ └── zh/ # 中文版
│ └── 1.23.0/
│ ├── en/
│ └── zh/
│
├── PYTHON/ # Python 运行时
│ ├── 3.10/
│ ├── 3.11/
│ └── 3.12/
│ ├── en/
│ └── zh/
│
├── NODEJS/ # Node.js 运行时
│ ├── 18/
│ ├── 20/
│ └── 22/
│ ├── en/
│ └── zh/
│
├── JAVA/ # Java 运行时
├── PHP/ # PHP 运行时
├── RUST/ # Rust 运行时
├── C/ # C 运行时
├── CPP/ # C++ 运行时
├── NET/ # .NET 运行时
├── NGINX/ # Nginx 运行时
├── DEBIAN/ # Debian 基础镜像
├── UBUNTU/ # Ubuntu 基础镜像
└── UBUNTU-CUDA/ # Ubuntu CUDA 镜像
├── en/
└── zh/
./test.sh <运行时类型> <语言> [版本号]-
运行时类型: 不区分大小写,支持多种别名
go/golang→ Gopython/py→ Pythonnodejs/node→ Node.jsjava→ Javaphp→ PHPrust→ Rustc→ Ccpp/c++→ C++net/dotnet→ .NETnginx→ Nginxdebian→ Debianubuntu→ Ubuntuubuntu-cuda/cuda→ Ubuntu CUDA
-
语言:
en(英文) 或zh(中文) -
版本号: 可选,对于多版本的运行时需要指定
# Go 1.22.5 英文版
./test.sh go en 1.22.5
# Go 1.23.0 中文版
./test.sh go zh 1.23.0
# Python 3.11 英文版
./test.sh python en 3.11
# Python 3.12 中文版
./test.sh python zh 3.12
# Node.js 20 英文版
./test.sh nodejs en 20
# Node.js 22 中文版
./test.sh nodejs zh 22
# Java 英文版(单版本)
./test.sh java en
# PHP 8.2 中文版
./test.sh php zh 8.2
# Rust 英文版
./test.sh rust en
# .NET 中文版
./test.sh net zh
# Ubuntu CUDA 英文版(会检查 GPU 支持)
./test.sh ubuntu-cuda en所有需要网络服务的运行时都会监听 0.0.0.0:8080,可以通过以下方式测试:
# 使用 curl 测试
curl http://localhost:8080
# 使用浏览器访问
# http://localhost:8080脚本会在启动服务前自动检查 8080 端口是否被占用:
- 如果端口可用: 直接启动服务
- 如果端口被占用: 会显示占用进程信息,并提供以下选项:
- 终止占用进程并继续: 自动终止占用进程后启动服务
- 退出测试: 退出脚本,不启动服务
- 忽略并继续: 忽略端口占用,尝试启动(可能导致启动失败)
端口检查支持多种检测方法(按优先级):
lsof(推荐)netstatss
当测试 CUDA 相关的运行时(ubuntu-cuda)时,脚本会自动检查:
-
NVIDIA GPU 驱动
- 检查
nvidia-smi命令是否可用 - 显示 GPU 名称、驱动版本、显存信息
- 显示 CUDA 版本
- 检查
-
CUDA 工具包
- 检查
nvcc编译器是否可用 - 显示 CUDA 版本信息
- 检查
-
GPU 设备文件
- 检查
/dev/nvidia*设备文件是否存在 - 确认 GPU 设备是否可访问
- 检查
- 驱动要求: 需要安装 NVIDIA 官方驱动(推荐版本 >= 450.80.02)
- CUDA 版本: Ubuntu CUDA 12.4.1 镜像需要 CUDA 12.4+ 驱动支持
- 设备访问: 确保容器/环境有权限访问
/dev/nvidia*设备 - 常见问题:
- 如果
nvidia-smi不可用,GPU 加速功能将不可用 - 如果
/dev/nvidia*不存在,需要检查设备挂载或权限设置 - CUDA 版本不匹配可能导致运行时错误
- 如果
根据 runtime_list.md,当前支持以下运行时:
| 运行时 | 版本 | 语言支持 |
|---|---|---|
| Debian | 12.6 | en, zh |
| Ubuntu | 22.04 | en, zh |
| Ubuntu CUDA | 12.4.1 | en, zh |
| C | GCC 12.2.0 | en, zh |
| C++ | GCC 12.2.0 | en, zh |
| Go | 1.22.5, 1.23.0 | en, zh |
| Java | OpenJDK 17 | en, zh |
| .NET | 8.0 | en, zh |
| Node.js | 18, 20, 22 | en, zh |
| PHP | 7.4, 8.2 | en, zh |
| Python | 3.10, 3.11, 3.12 | en, zh |
| Rust | 1.81.0 | en, zh |
| Nginx | 1.22.1 | en, zh |
脚本会自动检查运行所需的依赖工具,如果缺失会提示:
- Go:
go - Python:
python3 - Node.js:
node - Java:
javac,java - PHP:
php - Rust:
rustc - C:
gcc - C++:
g++ - .NET:
dotnet - Nginx:
nginx(可选) - CUDA:
nvidia-smi,nvcc(可选)
- 查找测试目录: 根据运行时类型和版本查找对应的测试文件夹
- 检查依赖: 验证所需的编译器和运行时是否已安装
- CUDA 检查: 如果是 CUDA 运行时,检查 GPU 支持情况
- 编译/运行: 根据项目类型执行相应的编译和运行命令
- 服务监听: 启动 HTTP 服务器监听 0.0.0.0:8080
- 结果反馈: 显示测试结果和服务器状态
- 端口占用检查: 脚本会自动检查 8080 端口占用情况,如果被占用会提示处理选项
- 后台运行: 服务器会在后台运行,使用
Ctrl+C停止 - 权限问题: 某些运行时可能需要特定权限(如 CUDA 需要访问 GPU 设备)
- 网络访问: 服务监听在 0.0.0.0,可以从外部访问
- 资源清理: 脚本会自动清理临时文件和编译产物
- 交互式输入: 端口被占用时需要交互式选择处理方式(非交互式环境会自动退出)
# 检查端口占用(脚本会自动检查)
lsof -i :8080
# 手动检查端口占用
netstat -tuln | grep 8080
# 或
ss -tuln | grep 8080
# 检查进程
ps aux | grep <运行时类型>
# 终止占用8080端口的进程
lsof -ti:8080 | xargs kill -9# 手动检查 GPU
nvidia-smi
# 检查 CUDA 版本
nvcc --version
# 检查设备文件
ls -la /dev/nvidia*根据错误提示安装相应的依赖:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install <package-name>
# 例如:安装 Go
sudo apt-get install golang-go本项目用于 Sealos DevBox 运行时测试。