# ipx-web (#203): the frontend, built from web/ and served by Caddy, which passes the API to ipx. # Built from the repo's root: docker buildx build -f Dockerfile.web . FROM node:22-slim AS build WORKDIR /src COPY package.json package-lock.json ./ RUN npm ci --omit=dev COPY web ./web RUN node web/build.mjs /dist FROM caddy:2 # caddy:2's Alpine ships curl, which nothing here runs (no healthcheck since #218): out, so a # curl flaw such as CVE-2026-92392 has nothing to reach in a container facing the internet (#237). RUN apk del --no-cache curl COPY web/Caddyfile /etc/caddy/Caddyfile COPY --from=build /dist /srv EXPOSE 8080