kaboot/Dockerfile

49 lines
1.4 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 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"]