synops/maskinrommet/Dockerfile
vegard 61b35d3c01 Skrivestien: POST /intentions/create_node (oppgave 2.4)
Implementerer den første intensjonen i maskinrommet — skrivestien
som gjør at frontend kan opprette noder via maskinrommet.

Flyten:
1. Valider input (node_kind, visibility, metadata)
2. Generer UUIDv7 (tidssortert)
3. Skriv til SpacetimeDB (instant — frontend ser noden umiddelbart)
4. Spawn async tokio-task for PG-persistering
5. Returner node_id uten å vente på PG

Verifisert på server med fire testcaser:
1. Uten auth → 401
2. Ugyldig visibility → 400 med feilmelding
3. Minimal request (tomt body) → 200, node opprettet med defaults
4. Full request → 200, node verifisert i både STDB og PG

Også: Dockerfile oppdatert til Rust 1.88 (avhengigheter krevde >1.86),
og api_grensesnitt.md oppdatert med endepunktdokumentasjon.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 13:09:50 +01:00

22 lines
644 B
Docker

# Maskinrommet — flertrinns Docker-bygg
# Bygger Rust-binæren i et kompileringssteg, kopierer til minimal runtime.
FROM rust:1.88 AS builder
WORKDIR /app
COPY Cargo.toml Cargo.lock* ./
# Forhåndsbygg avhengigheter (cache-lag)
RUN mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release && rm -rf src
COPY src/ src/
RUN touch src/main.rs && cargo build --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/maskinrommet /usr/local/bin/maskinrommet
ENV BIND_ADDR=0.0.0.0:3100
EXPOSE 3100
CMD ["maskinrommet"]