概述
沙箱模板允许您创建预配置的沙箱环境,包含自定义基础镜像、依赖包、文件和启动命令。使用模板可以大幅减少启动时间。
什么是模板
模板是预构建的沙箱环境,包含:
- 基础镜像:Ubuntu、Debian、Python、Node.js 等
- 依赖包:预安装的系统包和语言包
- 文件系统:预复制的文件和配置
- 环境变量:构建时设置的环境变量
- 启动命令:沙箱启动时自动运行的进程
优势
- 快速启动:几百毫秒内启动
- 预运行进程:服务器、数据库等已运行
- 一致性:所有实例使用相同配置
创建模板
使用 SDK 的 Builder 模式定义和构建模板:
import { Template, waitForPort } from '@e2b/code-interpreter'
// 使用 Builder 模式定义模板
const template = Template()
.fromPythonImage('3.11')
.setEnvs({ ENV: 'production' })
.setWorkdir('/app')
.pipInstall(['numpy', 'pandas'])
.setStartCmd('python server.py', waitForPort(8000))
// 构建并部署模板
const buildInfo = await Template.build(template, {
alias: 'my-python-env',
cpuCount: 2,
memoryMB: 1024
})
console.log('Template ID:', buildInfo.templateId)
注:fromBaseImage()、fromPythonImage() 等方法默认会从 Docker Hub 拉取官方镜像,在国内网络环境下可能失败(例如超时、Connection reset 等)。
推荐做法: 直接通过我们的镜像代理拉取官方镜像,并在模板中使用完整的镜像路径:
.fromImage("<代理地址>/<registry 地址>/<镜像>")
注意:Docker Hub 对应的 registry 地址是 registry-1.docker.io,而不是 docker.io。
例如,拉取 Docker Hub 的 python:3.11 镜像:
.fromImage("crp-internal.qiniucs.com/registry-1.docker.io/library/python:3.11")
生产环境建议使用固定的小版本号(如 python:3.11)或 digest 固定镜像,以确保构建结果可复现。
当前支持代理的 registry 服务包括:
registry-1.docker.ioquay.ioghcr.iogcr.io
模板命名
为模板指定清晰、描述性的别名,建议使用业务前缀:
- 业务前缀 + 应用名称:
mycompany-app - 业务前缀 + 应用名称 + 环境:
mycompany-app-production、mycompany-app-staging
注意: 模板别名 (alias) 是全局唯一的,请使用业务前缀来确保唯一性。
使用模板
构建完成后,使用模板别名创建沙箱:
import { Sandbox } from '@e2b/code-interpreter'
const sandbox = await Sandbox.create({
template: 'my-python-env'
})
文档反馈
(如有产品使用问题,请 提交工单)