# ============================================ # Breakpilot Dokumentation - MkDocs Build # Multi-stage build fuer minimale Image-Groesse # ============================================ # Stage 1: Build MkDocs Site FROM python:3.11-slim AS builder WORKDIR /docs # Install MkDocs with Material theme and plugins RUN pip install --no-cache-dir \ mkdocs==1.6.1 \ mkdocs-material==9.5.47 \ pymdown-extensions==10.12 # Copy configuration and source files COPY mkdocs.yml /docs/ COPY docs-src/ /docs/docs-src/ # Build static site RUN mkdocs build # Stage 2: Serve with Nginx FROM nginx:alpine # Copy built site from builder stage COPY --from=builder /docs/docs-site /usr/share/nginx/html # Custom nginx config for SPA routing RUN echo 'server { \ listen 80; \ server_name localhost; \ root /usr/share/nginx/html; \ index index.html; \ \ location / { \ try_files $uri $uri/ /index.html; \ } \ \ # Enable gzip compression \ gzip on; \ gzip_types text/plain text/css application/json application/javascript text/xml application/xml; \ gzip_min_length 1000; \ \ # Cache static assets \ location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { \ expires 1y; \ add_header Cache-Control "public, immutable"; \ } \ }' > /etc/nginx/conf.d/default.conf EXPOSE 80 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost/ || exit 1 CMD ["nginx", "-g", "daemon off;"]