Ready to use Bun and Deno images
458
Bun tooling and the official Deno runtime in one container image. Use Bun for package management, TypeScript tooling, and build steps, then run your application with Deno.
fusionaxi/bun-denolinux/amd64 and linux/arm64debianbun (UID/GID 1001:1001)/appSource code · Dockerfile · Available tags · Report an issue
docker pull fusionaxi/bun-deno:latest
docker run --rm fusionaxi/bun-deno:latest bun --version
docker run --rm fusionaxi/bun-deno:latest deno --version
Run a local TypeScript file with Deno:
docker run --rm -v "$PWD:/app" fusionaxi/bun-deno:debian deno run ./main.ts
For an application that needs network access, grant Deno that permission explicitly:
docker run --rm -p 8000:8000 -v "$PWD:/app" \
fusionaxi/bun-deno:debian deno run --allow-net ./main.ts
The application must listen on port 8000 on a container-accessible address such as 0.0.0.0 for this port mapping to work. Add other Deno permissions as required by your application.
| Variant | Runtime base | Included tooling |
|---|---|---|
debian | Official Deno Debian | Bun, bunx, Deno, Tini |
alpine | Official Deno Alpine | Bun's musl build, bunx, Deno, Tini |
The Alpine variant preserves the official Deno image's glibc compatibility setup and adds Bun's musl binary. The Debian variant uses Bun's glibc binary.
| Tag pattern | Meaning |
|---|---|
latest | Latest stable Deno, debian variant |
<variant> | Latest stable Deno with the selected variant |
<deno-major>-<variant> | Selected stable Deno release in that major |
<deno-version>-<variant> | Exact Deno version with the release's selected stable Bun |
<bun-version>-<deno-version>-<variant> | Exact Bun and Deno versions with the selected variant |
Version placeholders use numeric versions without a leading v. Releases select the latest stable Bun and latest stable Deno. Bun canary and prereleases are excluded. The release plan tracks one stable Deno release; it does not maintain every historical Deno major.
Versioned tags can be rebuilt to refresh their operating system packages. Pin a published digest (fusionaxi/bun-deno@sha256:...) when you need an immutable reference. Consult the available tags page for published versions.
For a project with a dependency-free main.ts, use this Dockerfile:
FROM fusionaxi/bun-deno:debian
COPY --chown=bun:bun main.ts /app/main.ts
CMD ["deno", "run", "main.ts"]
docker build -t my-bun-deno-app .
docker run --rm my-bun-deno-app
Bun is available during image builds for dependency installation and TypeScript build scripts. Configure Deno dependency caching for your application's imports. See the Deno example.
The default command is bun --help. Explicit executable commands such as bun, deno, and sh run directly. Flag-only arguments and non-executable script paths are passed to Bun. To select Deno, specify it explicitly: deno run ./main.ts.
Tini runs as the init process, and the entrypoint executes the selected command to preserve signals and exit codes. Container startup makes no telemetry requests.
| Setting | Value |
|---|---|
BUN_INSTALL | /home/bun/.bun |
BUN_INSTALL_BIN | /home/bun/.bun/bin |
DENO_DIR | /home/bun/.cache/deno |
DENO_INSTALL_ROOT | /home/bun/.deno |
DENO_NO_UPDATE_CHECK | 1 |
DENO_NO_PROMPT | 1 |
Bun and Deno installation directories and the Deno cache are writable by bun. /home/bun/.bun/bin and /home/bun/.deno/bin are on PATH. Bun's runtime transpiler cache is disabled through BUN_RUNTIME_TRANSPILER_CACHE_PATH=0. Deno update checks and interactive permission prompts are disabled; pass required permissions on the command line.
Use COPY --chown=bun:bun for application files. Bind-mounted directories must allow UID 1001 to write if the application needs to modify them. When adding system packages in a derived image, switch to USER root for installation and back to USER bun afterward.
Content type
Image
Digest
sha256:0c2369912…
Size
121.6 MB
Last updated
1 day ago
docker pull fusionaxi/bun-deno