# JNR Web — multi-stage build: compile WASM then serve static files
#
# Build:
#   podman build -t jnr-web .
#   docker build -t jnr-web .
#
# Run locally:
#   podman run --rm -p 8080:80 jnr-web
#   Then visit http://localhost:8080
#
# Deploy to k3s:
#   podman save jnr-web | sudo k3s ctr images import -
#   sudo k3s kubectl apply -f k8s/

# ── Stage 1: Build WASM artifacts ──
FROM docker.io/emscripten/emsdk:3.1.51 AS builder

WORKDIR /src
COPY Makefile ./
COPY include/ include/
COPY src/ src/
COPY assets/ assets/
COPY web/ web/
RUN make web

# ── Stage 2: Serve static files ──
FROM docker.io/joseluisq/static-web-server:2

COPY --from=builder /src/dist-web/ /public/

# Disable the default cache-control headers which cache .js for 1 year.
# The .js and .wasm files must always be fetched together (EM_ASM address
# table in JS must match the compiled WASM), so aggressive caching causes
# "No EM_ASM constant found" errors after redeployments.
ENV SERVER_CACHE_CONTROL_HEADERS=false
