Appearance
Sandbox Templates
Sandbox templates allow you to create preconfigured sandbox environments with custom base images, dependencies, files, and startup commands. Using templates can significantly reduce startup time.
What is a Template
A template is a pre-built sandbox environment that includes:
- Base image: Ubuntu, Debian, Python, Node.js, etc.
- Dependencies: Pre-installed system and language packages
- File system: Pre-copied files and configurations
- Environment variables: Variables set at build time
- Startup command: Processes that run automatically when the sandbox starts
Benefits
- Fast startup: Starts in a few hundred milliseconds
- Pre-running processes: Servers, databases, etc., are already running
- Consistency: All instances use the same configuration
Creating a Template
Use the SDK's Builder pattern to define and build a template:
javascript
import { Template, waitForPort } from '@e2b/code-interpreter'
// Define the template using the Builder pattern
const template = Template()
.fromPythonImage('3.11')
.setEnvs({ ENV: 'production' })
.setWorkdir('/app')
.pipInstall(['numpy', 'pandas'])
.setStartCmd('python server.py', waitForPort(8000))
// Build and deploy the template
const buildInfo = await Template.build(template, {
alias: 'my-python-env',
cpuCount: 2,
memoryMB: 1024
})
console.log('Template ID:', buildInfo.templateId)Note: Methods like fromBaseImage() and fromPythonImage() pull official images from Docker Hub by default, which may fail in certain network environments (e.g., timeouts, Connection reset).
Recommended approach: Pull official images directly through our image proxy and use the full image path in the template:
javascript
.fromImage("<proxy-address>/<registry-address>/<image>")Note: The registry address for Docker Hub is registry-1.docker.io, not docker.io.
For example, to pull the python:3.11 image from Docker Hub:
javascript
.fromImage("crp-internal.sufycs.com/registry-1.docker.io/library/python:3.11")For production environments, it is recommended to use a fixed minor version (e.g., python:3.11) or a digest to pin the image, ensuring reproducible builds.
Currently supported registry services with proxy:
registry-1.docker.ioquay.ioghcr.iogcr.io
Template Naming
Assign clear, descriptive aliases to templates. It is recommended to use a business prefix:
- Business prefix + application name:
mycompany-app - Business prefix + application name + environment:
mycompany-app-production,mycompany-app-staging
Note: Template aliases are globally unique. Use a business prefix to ensure uniqueness.
Using a Template
After building, create a sandbox using the template alias:
javascript
import { Sandbox } from '@e2b/code-interpreter'
const sandbox = await Sandbox.create({
template: 'my-python-env'
})