Docker Deployment

Run Rustume from ghcr.io/lgtm-hq/rustume, build from source, verify signatures, and use Docker Compose.

Rustume ships as a single Docker container that serves both the SolidJS resume builder and the Rust API.

Prerequisites

Native development (without Docker) requires Rust, wasm-pack, bun, and the wasm32-unknown-unknown target — see Development setup.

Option A: Pull from GHCR

Published release images are pushed when a v*.*.* tag is created. Use latest or a semver tag:

docker pull ghcr.io/lgtm-hq/rustume:latest
docker run -p 3000:3000 ghcr.io/lgtm-hq/rustume:latest

Open http://localhost:3000. The same process also exposes:

  • GET /health — container health checks
  • /swagger-ui/ — API documentation
  • /api-docs/openapi.jsonOpenAPI document

If docker pull returns manifest unknown, the release image may not be published yet. Use Option B or wait for the Docker workflow on the tag.

Option B: Build from source

git clone https://github.com/lgtm-hq/Rustume.git
cd Rustume
docker build -t rustume -f docker/Dockerfile .
docker run -p 3000:3000 rustume

On Apple Silicon, build for your native platform if you hit Rosetta errors:

docker build --platform linux/arm64 -t rustume -f docker/Dockerfile .

Verify installation

curl -sf http://localhost:3000/health

Docker Compose

The root docker-compose.yml supports both pull and local build:

docker compose up          # Pull ghcr.io/lgtm-hq/rustume:latest
docker compose up --build  # Build from docker/Dockerfile

For Rustume Cloud local development, use the cloud profile (requires PostgreSQL env vars):

cp .env.example .env
docker compose --profile cloud up

Image tags

TagWhen publishedUse for
latest, 0.16.0, 0.16, 0v*.*.* git tag pushProduction self-hosting
main, sha-<commit>main branch pushBleeding-edge / CI
build-<run>-<arch>CI staging onlyInternal; not for pulls

Supply chain verification

Release images are signed with Sigstore keyless signing. See Supply chain for cosign verify commands and SBOM attestation checks.