Skip to main content

Creating template

When creating a template, you can specify options:
File ignoring: The SDK automatically reads .dockerignore files and combines them with your fileIgnorePatterns (TypeScript) or file_ignore_patterns (Python). Files matching these patterns are excluded from uploads and hash calculations.

Defining base image

Every template starts with a base image that provides the foundation for your sandbox environment.
E2B currently supports only Debian-based images. Your base image must be Debian or a Debian derivative (e.g., debian, ubuntu, python, node). Alpine, RedHat-based, and other non-Debian distributions are not supported.

Predefined base images

Use convenience methods for common base images with Ubuntu, Debian, Python, Node.js, or Bun:

Custom base image

Use any Docker image from Docker Hub or other registries:

Default E2B base image

Use the default E2B base image, which comes pre-configured for sandbox environments:

Build from existing template

Extend an existing template from your team or organization:
You can only call base image methods once per template. Subsequent calls will throw an error.

Parsing existing Dockerfiles

Convert existing Dockerfiles to template format using fromDockerfile():

Dockerfile instructions support

InstructionSupportedBehavior
FROMSets base image
RUNConverts to runCmd() / run_cmd()
COPY / ADDConverts to copy()
WORKDIRConverts to setWorkdir() / set_workdir()
USERConverts to setUser() / set_user()
ENVConverts to setEnvs() / set_envs(); supports both ENV key=value and ENV key value formats
CMD / ENTRYPOINTConverts to setStartCmd() / set_start_cmd() with 20 seconds timeout as ready command
EXPOSESkipped (not supported)
VOLUMESkipped (not supported)
Multi-stage Dockerfiles are not supported.