Next.js only emits .next/standalone, not an empty public/ dir when the
source has none -- the Dockerfile's COPY --from=build /app/public
failed outright since the path never existed.
Same class of bug as ceo-api/ceo-worker: plain npm install skips
devDependencies (typescript, tailwindcss, postcss) when NODE_ENV=production
is visible at build time, which next build needs. Switched to
npm ci --include=dev.