Package Docker images

Fission can package both server-rendered apps and static sites as Docker images. Use this when your deployment platform expects containers or when you want the same release artifact to run locally, in staging, and in production.

1. Add Docker package settings


[package.docker]
port = 8080
tags = ["ghcr.io/example/my-app:1.0.0", "ghcr.io/example/my-app:latest"]

Finished state and checks

By the end of Package Docker images, you should have a runnable change, not just a set of snippets. Run the command shown in the page, exercise the feature once manually, and add or update the smallest test that protects the behavior.
Check
Expected result
Build
cargo check or the relevant fission command finishes without target-specific configuration errors.
Behavior
The screen, package, server route, or test flow described by the recipe is visible and responds to input.
Failure path
At least one denied, missing, invalid, or empty case renders a useful message instead of silently doing nothing.
Next link
The reference page linked from the recipe explains the exact fields, commands, or types used here.
For static sites, you can choose the Rust server adapter used inside the image:
[package.docker]
adapter = "axum"
port = 8080
tags = ["ghcr.io/example/my-docs:1.0.0"]
adapter accepts axum or actix. Server-rendered apps do not use this field because the app binary itself is the server.

2. Run readiness

fission readiness package --project-dir . --target ssr --format docker-image
Readiness checks that Docker and Cargo are available, that the target exists in fission.toml, and that server apps have [server].entry configured.

3. Package the image

Server app:
fission package --project-dir . --target ssr --format docker-image --release
Static site:
fission package --project-dir . --target static-site --format docker-image --release
By default, Fission runs docker build and applies the configured tags. Set build = false if CI should build the generated context itself.

4. Publish to a registry

[distribution.docker_registry.production]
tags = ["ghcr.io/example/my-app:1.0.0", "ghcr.io/example/my-app:latest"]
docker login ghcr.io
fission publish \
  --project-dir . \
  --provider docker-registry \
  --artifact target/fission/release/ssr/docker-image/artifact-manifest.json \
  --site production
Fission tags and pushes through the Docker CLI. The release receipt records the pushed tags and points back at the artifact manifest.
Fission
A cross-platform, GPU-accelerated user interface framework for Rust. MIT licensed.
Copyright (c) 2026 Fission
Ready to use today. Widget APIs are expected to remain stable; some runtime and shell APIs may change before 1.0.0.
Fission 0.7.0