kaboot/Dockerfile
2026-01-15 22:35:20 -07:00

45 lines
1.2 KiB
Docker

# 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 utils/ ./utils/
COPY data/ ./data/
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
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
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"]