Appearance
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 imagefromNodeImage(variant)– Node.js imagefromUbuntuImage(variant)– Ubuntu imagefromDebianImage(variant)– Debian imagefromBunImage(variant)– Bun imagefromImage(image)– Any Docker imagefromDockerfile(content)– Build from a DockerfilefromTemplate(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 directoryremove(path)– Delete a file or directoryrename(src, dest)– Rename a file or directorymakeDir(path)– Create a directorymakeSymlink(src, dest)– Create a symbolic link
Command Execution Methods
Execute commands during build:
runCmd(command)– Run a commandpipInstall(packages)– Install Python packagesnpmInstall(packages)– Install npm packagesbunInstall(packages)– Install Bun packagesaptInstall(packages)– Install apt packagesgitClone(url, path)– Clone a Git repository
Configuration Methods
Set template configuration:
setUser(user)– Set the default usersetWorkdir(path)– Set the working directorysetEnvs(envs)– Set environment variablessetStartCmd(cmd, readyCmd)– Set the start command and readiness checksetReadyCmd(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()