全栈应用服务器

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

    沙箱模板

    最近更新时间: 2026-04-21 19:19:32

    概述

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

    什么是模板

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

    • 基础镜像: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.io
    • quay.io
    • ghcr.io
    • gcr.io

    模板命名

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

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

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

    使用模板

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

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