# ─── Stage 1: Build ─────────────────────────────────────────────────────── FROM node:slim AS builder WORKDIR /app # Install dependencies COPY package.json package-lock.json ./ RUN yarn install --frozen-lockfile COPY . . ARG VITE_API_BASE_URL ENV VITE_API_BASE_URL=${VITE_API_BASE_URL} ARG VITE_FIREBASE_API_KEY ENV VITE_FIREBASE_API_KEY=${VITE_FIREBASE_API_KEY} ARG VITE_FIREBASE_AUTH_DOMAIN ENV VITE_FIREBASE_AUTH_DOMAIN=${VITE_FIREBASE_AUTH_DOMAIN} ARG VITE_FIREBASE_PROJECT_ID ENV VITE_FIREBASE_PROJECT_ID=${VITE_FIREBASE_PROJECT_ID} ARG VITE_FIREBASE_STORAGE_BUCKET ENV VITE_FIREBASE_STORAGE_BUCKET=${VITE_FIREBASE_STORAGE_BUCKET} ARG VITE_FIREBASE_MESSAGING_SENDER_ID ENV VITE_FIREBASE_MESSAGING_SENDER_ID=${VITE_FIREBASE_MESSAGING_SENDER_ID} ARG VITE_FIREBASE_APP_ID ENV VITE_FIREBASE_APP_ID=${VITE_FIREBASE_APP_ID} ARG VITE_FIREBASE_MEASUREMENT_ID ENV VITE_FIREBASE_MEASUREMENT_ID=${VITE_FIREBASE_MEASUREMENT_ID} RUN yarn build # ─── Stage 2: Serve ──────────────────────────────────────────────────────── FROM nginx:stable-alpine # Remove default nginx html RUN rm -rf /usr/share/nginx/html/* # Replace default nginx.conf COPY nginx.conf /etc/nginx/nginx.conf # Copy our built files into nginx’s html folder COPY ./public/assets /usr/share/nginx/html COPY --from=builder /app/dist /usr/share/nginx/html # (Optional) If you need any custom nginx.conf, COPY it here— # e.g. COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]