全栈应用服务器

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

    构建模板

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

    概述

    使用 SDK 构建和部署沙箱模板到云端。

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

    构建并等待完成

    build() 方法会构建模板并等待构建过程完成,返回包含模板 ID 和构建 ID 的信息。

    import { Template } from '@e2b/code-interpreter'
    
    async function main() {
      const template = Template().fromPythonImage('3')
    
      const buildInfo = await Template.build(template, {
        alias: 'my-template',
        cpuCount: 2,
        memoryMB: 2048,
        skipCache: false,
      })
    
      // 返回: { alias, templateId, buildId }
      console.log('Template ID:', buildInfo.templateId)
    }
    
    main()
    

    后台构建

    buildInBackground() 方法启动构建但不等待完成,适合需要稍后检查状态的场景。

    import { Template } from '@e2b/code-interpreter'
    
    async function main() {
      const template = Template().fromPythonImage('3')
    
      const buildInfo = await Template.buildInBackground(template, {
        alias: 'my-template',
        cpuCount: 2,
        memoryMB: 2048,
      })
    
      // 立即返回: { alias, templateId, buildId }
      console.log('Build started:', buildInfo.buildId)
    }
    
    main()
    

    检查构建状态

    getBuildStatus() 方法用于检查使用 buildInBackground() 启动的构建状态。

    import { Template } from '@e2b/code-interpreter'
    
    async function main() {
      // 假设 buildInfo 是从 buildInBackground() 获取的
      const buildInfo = { templateId: 'xxx', buildId: 'yyy' }
    
      const status = await Template.getBuildStatus(buildInfo, {
        logsOffset: 0,
      })
    
      // 返回: { status: 'building' | 'ready' | 'error', logEntries: [...] }
      console.log('Status:', status.status)
    }
    
    main()
    

    检查别名是否存在

    使用 aliasExists() 方法检查模板别名是否已存在,避免重复构建。

    import { Template } from '@e2b/code-interpreter'
    
    async function main() {
      // 检查别名是否存在
      const exists = await Template.aliasExists('my-template')
    
      if (!exists) {
        const template = Template().fromPythonImage('3')
        await Template.build(template, { alias: 'my-template' })
      }
    }
    
    main()
    

    示例:后台构建状态轮询

    以下示例演示如何使用后台构建并轮询状态直到完成。

    import { Template } from '@e2b/code-interpreter'
    
    async function main() {
      const template = Template().fromPythonImage('3')
    
      const buildInfo = await Template.buildInBackground(template, {
        alias: 'my-template',
        cpuCount: 2,
        memoryMB: 2048,
      })
    
      let logsOffset = 0
      let status = 'building'
    
      while (status === 'building') {
        const buildStatus = await Template.getBuildStatus(buildInfo, {
          logsOffset,
        })
    
        logsOffset += buildStatus.logEntries.length
        status = buildStatus.status
    
        buildStatus.logEntries.forEach(
          (logEntry) => console.log(logEntry.toString())
        )
    
        await new Promise(resolve => setTimeout(resolve, 2000))
      }
    
      if (status === 'ready') {
        console.log('Build completed successfully')
      } else {
        console.error('Build failed')
      }
    }
    
    main()
    
    以上内容是否对您有帮助?