SpacetimeDB Docker & Self-Hosted Deployment

GitHub

Development at the speed of light

RAW Compose
1. Pull Image (DOCKERHUB) docker pull clockworklabs/spacetimedb
2. Docker Run (1-Click Launch) docker run -d --name spacetimedb -p 3000:3000 --restart always clockworklabs/spacetimedb:latest
3. Podman Run podman run -d --name spacetimedb -p 3000:3000 --restart always clockworklabs/spacetimedb:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/clockworklabs/spacetimedb:latest
5. ORAS Pull (OCI Artifact) oras pull clockworklabs/spacetimedb:latest
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
services:
  node:
    labels:
      app: spacetimedb
    build:
      context: ./
      dockerfile: ./crates/standalone/Dockerfile
      args:
        CARGO_PROFILE: dev
    volumes:
      - ./crates/standalone:/usr/src/app/crates/standalone
      - ./crates/core:/usr/src/app/crates/core
      - ./crates/client-api:/usr/src/app/crates/client-api
      - ./crates/lib:/usr/src/app/crates/lib
      - ./crates/sats:/usr/src/app/crates/sats
      - ./crates/bindings:/usr/src/app/crates/bindings
      - ./crates/bindings-macro:/usr/src/app/crates/bindings-macro
      - ./crates/bindings-sys:/usr/src/app/crates/bindings-sys
      - ./crates/metrics:/usr/src/app/crates/metrics
      - ./crates/client-api-messages:/usr/src/app/crates/client-api-messages
      - ./Cargo.toml:/usr/src/app/Cargo.toml
      - ./flamegraphs:/usr/src/app/flamegraphs
      - key_files:/etc/spacetimedb
      - /stdb
    ports:
      - "3000:3000"
      # Postgres
      - "5432:5432"
      # Tracy
      - "8086:8086"
    entrypoint: cargo watch -i flamegraphs -i log.conf --why -C crates/standalone -x 'run start --data-dir=/stdb/data --jwt-pub-key-path=/etc/spacetimedb/id_ecdsa.pub --jwt-priv-key-path=/etc/spacetimedb/id_ecdsa --pg-port 5432'
    privileged: true
    environment:
      SPACETIMEDB_FLAMEGRAPH_PATH: ../../../../flamegraphs/flamegraph.folded
      SPACETIMEDB_TRACY: 1
      # Tracy utilizes the Time Stamp Counter (TSC) in CPUs for high-resolution timing.
      # The invariant TSC is a feature that ensures the TSC runs at a constant rate,
      # regardless of power-saving modes or frequency changes.
      #
      # This flag will instruct Tracy to proceed without verifying the presence of an invariant TSC.
      # If the CPU lacks this feature, Tracy cannot guarantee accurate timing.
      # So use this approach with caution, as it may affect profiling accuracy.
      # TRACY_NO_INVARIANT_CHECK: 1
      RUST_BACKTRACE: 1
      ENV: dev
    networks:
      - spacetimedb_default

networks:
  spacetimedb_default:
    name: spacetimedb_default
volumes:
  key_files: