# Kaboot Frontend - Multi-stage Production Build # # Build: # docker build \ # --build-arg VITE_API_URL=https://kaboot.example.com \ # --build-arg VITE_BACKEND_URL=https://kaboot.example.com \ # --build-arg VITE_AUTHENTIK_URL=https://auth.example.com \ # -t kaboot-frontend . FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --silent COPY index.html index.tsx index.css App.tsx constants.ts types.ts ./ COPY tsconfig.json vite.config.ts postcss.config.js tailwind.config.js ./ COPY src/ ./src/ COPY components/ ./components/ COPY hooks/ ./hooks/ COPY services/ ./services/ COPY public/ ./public/ ARG VITE_API_URL ARG VITE_BACKEND_URL ARG VITE_AUTHENTIK_URL ARG VITE_OIDC_CLIENT_ID=kaboot-spa ARG VITE_OIDC_APP_SLUG=kaboot ARG GEMINI_API_KEY ARG VITE_TURN_URL ARG VITE_TURN_USERNAME ARG VITE_TURN_CREDENTIAL ENV VITE_API_URL=$VITE_API_URL \ VITE_BACKEND_URL=$VITE_BACKEND_URL \ VITE_AUTHENTIK_URL=$VITE_AUTHENTIK_URL \ VITE_OIDC_CLIENT_ID=$VITE_OIDC_CLIENT_ID \ VITE_OIDC_APP_SLUG=$VITE_OIDC_APP_SLUG \ GEMINI_API_KEY=$GEMINI_API_KEY \ VITE_TURN_URL=$VITE_TURN_URL \ VITE_TURN_USERNAME=$VITE_TURN_USERNAME \ VITE_TURN_CREDENTIAL=$VITE_TURN_CREDENTIAL RUN npm run build FROM caddy:2-alpine COPY --from=builder /app/dist /srv/frontend EXPOSE 80 443 CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]