# ---------- build ---------- FROM node:20-alpine AS build WORKDIR /app # deps COPY package.json package-lock.json* ./ RUN npm ci --no-audit --no-fund || npm i --no-audit --no-fund # app source COPY . . # Mount HF secrets at build-time, write .env.production, then build # (These IDs MUST match your Secrets names in the Settings tab) RUN --mount=type=secret,id=VITE_SUPABASE_URL,mode=0444,required=true \ --mount=type=secret,id=VITE_SUPABASE_ANON_KEY,mode=0444,required=true \ sh -lc '\ URL="$(cat /run/secrets/VITE_SUPABASE_URL)"; \ ANON="$(cat /run/secrets/VITE_SUPABASE_ANON_KEY)"; \ printf "VITE_SUPABASE_URL=%s\nVITE_SUPABASE_ANON_KEY=%s\n" "$URL" "$ANON" > .env.production; \ echo "--- .env.production ---"; cat .env.production; echo "-----------------------"; \ npm run build \ ' # ---------- runtime ---------- FROM node:20-alpine AS runtime WORKDIR /app # serve built assets COPY --from=build /app/dist ./dist RUN npm i -g serve@14 EXPOSE 4173 CMD ["serve", "-s", "dist", "-l", "4173"]