全栈应用服务器

  • 全栈应用服务器 > 使用指南 > 沙箱服务概述 > 沙箱模板

    沙箱模板

    最近更新时间: 2026-02-12 11:22:03

    概述

    沙箱模板允许您创建预配置的沙箱环境,包含自定义基础镜像、依赖包、文件和启动命令。使用模板可以大幅减少启动时间。

    什么是模板

    模板是预构建的沙箱环境,包含:

    • 基础镜像: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.io 拉取官方镜像,可能大概率会失败(超时、Connection reset 等)。

    推荐做法:

    1. 提前把基础镜像同步到国内可访问的镜像仓库
    2. 在模板中使用完整的镜像路径,例如:
      
      .fromImage("m.daocloud.io/docker.io/library/nginx")
      

    模板命名

    为模板指定清晰、描述性的别名,建议使用业务前缀:

    • 业务前缀 + 应用名称: mycompany-app
    • 业务前缀 + 应用名称 + 环境: mycompany-app-productionmycompany-app-staging

    注意: 模板别名 (alias) 是全局唯一的,请使用业务前缀来确保唯一性。

    使用模板

    构建完成后,使用模板别名创建沙箱:

    import { Sandbox } from '@e2b/code-interpreter'
    
    const sandbox = await Sandbox.create({
      template: 'my-python-env'
    })
    
    以上内容是否对您有帮助?