Containerize frontend

This commit is contained in:
Joey Yakimowich-Payne 2026-01-15 22:18:56 -07:00
commit cb565b5ac8
No known key found for this signature in database
GPG key ID: 6BFE655FA5ABD1E1
4 changed files with 74 additions and 36 deletions

41
Dockerfile Normal file
View file

@ -0,0 +1,41 @@
# 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 tsconfig.json vite.config.ts postcss.config.mjs ./
COPY src/ ./src/
COPY components/ ./components/
COPY hooks/ ./hooks/
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"]