diff --git a/docs/template/base-image.mdx b/docs/template/base-image.mdx index e98a4c11..f21e65c8 100644 --- a/docs/template/base-image.mdx +++ b/docs/template/base-image.mdx @@ -31,19 +31,22 @@ template = Template( 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. - + +E2B identifies your base image from its `/etc/os-release` and supports **Debian/Ubuntu, Fedora and the RHEL family (including Rocky Linux and AlmaLinux), Arch, and Alpine**. Images with no identifiable distribution — no `/etc/os-release`, e.g. `scratch`, distroless, or pure `nixos/nix` — and minimal images missing required packages (e.g. RHEL UBI-minimal with restricted repositories) are not supported and fail the build with a clear error naming the reason. For NixOS, use the official [`e2bdev/nixos`](#nixos-base-image) image instead of a raw NixOS image. + ### Predefined base images -Use convenience methods for common base images with Ubuntu, Debian, Python, Node.js, or Bun: +Use convenience methods for common base images with Ubuntu, Debian, Fedora, Alpine, Arch, Python, Node.js, or Bun: ```typescript JavaScript & TypeScript template.fromUbuntuImage("22.04"); // ubuntu:22.04 template.fromDebianImage("stable-slim"); // debian:stable-slim +template.fromFedoraImage("44"); // fedora:44 +template.fromAlpineImage("3.24"); // alpine:3.24 +template.fromArchImage("base-devel"); // archlinux:base-devel template.fromPythonImage("3.13"); // python:3.13 template.fromNodeImage("lts"); // node:lts template.fromBunImage("1.3"); // oven/bun:1.3 @@ -52,6 +55,9 @@ template.fromBunImage("1.3"); // oven/bun:1.3 ```python Python template.from_ubuntu_image("22.04") # ubuntu:22.04 template.from_debian_image("stable-slim") # debian:stable-slim +template.from_fedora_image("44") # fedora:44 +template.from_alpine_image("3.24") # alpine:3.24 +template.from_arch_image("base-devel") # archlinux:base-devel template.from_python_image("3.13") # python:3.13 template.from_node_image("lts") # node:lts template.from_bun_image("1.3") # oven/bun:1.3 @@ -93,6 +99,22 @@ template.from_base_image() # e2bdev/base `base` is also the template used when you call `Sandbox.create()` without specifying one. It is Debian-based and comes with common tooling pre-installed: Python 3, Node.js, Yarn, `git`, `curl`, `build-essential`, and the GitHub CLI (`gh`). For the exact contents, see the public Dockerfile: [`templates/base/e2b.Dockerfile`](https://github.com/e2b-dev/E2B/blob/main/templates/base/e2b.Dockerfile). +### NixOS base image + +Arbitrary [NixOS](https://nixos.org/) images (such as `nixos/nix`) aren't supported directly, because they don't expose the `/etc/os-release` metadata E2B needs to identify the distribution. To build NixOS-based sandboxes, use the official `e2bdev/nixos` image, which E2B prepares to work with the sandbox environment: + + + +```typescript JavaScript & TypeScript +template.fromImage("e2bdev/nixos"); +``` + +```python Python +template.from_image("e2bdev/nixos") +``` + + + ### Default resources A sandbox gets its CPU and memory from the template it's built on. A sandbox built from `base` starts with **2 vCPU and 512 MiB of RAM**.