Skip to content
Defining Templates

Defining Sandbox Templates

Use the SDK Builder API to define a complete sandbox template configuration.

Builder Pattern

The SDK provides a chainable Builder API for defining templates:

javascript
import { Template, waitForPort } from '@e2b/code-interpreter'

const template = Template()
  .fromImage('crp-internal.sufycs.com/registry-1.docker.io/library/python:3.11')
  .setUser('user')
  .setWorkdir('/app')
  .setEnvs({ ENV: 'production' })
  .pipInstall(['numpy', 'pandas'])
  .runCmd('echo "Setup complete"')
  .setStartCmd('python server.py', waitForPort(8000))

Base Image Methods

Choose a base image:

  • fromPythonImage(version) – Python image
  • fromNodeImage(variant) – Node.js image
  • fromUbuntuImage(variant) – Ubuntu image
  • fromDebianImage(variant) – Debian image
  • fromBunImage(variant) – Bun image
  • fromImage(image) – Any Docker image
  • fromDockerfile(content) – Build from a Dockerfile
  • fromTemplate(name) – Based on an existing template

When pulling official images from public registries like Docker Hub, it is recommended to use fromImage() with a full path via a mirror proxy, for example crp-internal.sufycs.com/registry-1.docker.io/library/python:3.11.

File System Methods

Manage the template file system:

  • copy(src, dest) – Copy a file or directory
  • remove(path) – Delete a file or directory
  • rename(src, dest) – Rename a file or directory
  • makeDir(path) – Create a directory
  • makeSymlink(src, dest) – Create a symbolic link

Command Execution Methods

Execute commands during build:

  • runCmd(command) – Run a command
  • pipInstall(packages) – Install Python packages
  • npmInstall(packages) – Install npm packages
  • bunInstall(packages) – Install Bun packages
  • aptInstall(packages) – Install apt packages
  • gitClone(url, path) – Clone a Git repository

Configuration Methods

Set template configuration:

  • setUser(user) – Set the default user
  • setWorkdir(path) – Set the working directory
  • setEnvs(envs) – Set environment variables
  • setStartCmd(cmd, readyCmd) – Set the start command and readiness check
  • setReadyCmd(cmd) – Set the readiness check command

Complete Example

javascript
import { Template, waitForPort } from '@e2b/code-interpreter'

async function main() {
  const template = Template()
    // Base image
    .fromImage('crp-internal.sufycs.com/registry-1.docker.io/library/node:20')

    // File system
    .setWorkdir('/app')
    .copy('./package.json', '/app/package.json')
    .copy('./src', '/app/src')

    // Install dependencies
    .npmInstall()

    // Environment variables
    .setEnvs({
      NODE_ENV: 'production',
      PORT: '3000'
    })

    // User configuration
    .setUser('user')

    // Start configuration
    .setStartCmd('npm start', waitForPort(3000))

  // Build the template
  const buildInfo = await Template.build(template, {
    alias: 'my-node-app',
    cpuCount: 2,
    memoryMB: 1024
  })
}

main()