# Stage 1: Build (Erstellung des Produktionsbundles) FROM node:20-alpine AS build # Setze das Arbeitsverzeichnis WORKDIR /usr/src/app test # Kopiere package.json und package-lock.json und installiere die Abhängigkeiten COPY package.json ./ RUN npm install --force && npm cache clean --force # Kopiere die weiteren wichtigen Projektdateien COPY components.json . COPY eslint.config.js . COPY index.html . COPY postcss.config.js . COPY tailwind.config.ts . COPY tsconfig.app.json . COPY tsconfig.json . COPY tsconfig.node.json . COPY vite.config.ts . COPY src ./src COPY public ./public COPY .env . # Baue das Projekt für die Produktion RUN npm run build # Stage 2: Production (Einfacher Webserver für die bereitgestellten Dateien) FROM node:20-alpine AS production # Setze das Arbeitsverzeichnis WORKDIR /usr/src/app # Installiere ein einfaches Static File Hosting Tool (wie serve) RUN npm install -g serve # Kopiere die gebauten Dateien aus der Build-Phase COPY --from=build /usr/src/app/dist ./dist # Kopiere die generierte index.html aus dem Build-Ordner (aus der Build-Phase) COPY --from=build /usr/src/app/index.html ./index.html # Baue die TypeScript API #RUN npm install && npx tsc api.ts # Exponiere den Port, auf dem der Server läuft EXPOSE 5030 # Starte den Server auf Port 5000 (dieser wird dann über den Nginx-Reverse-Proxy weitergeleitet) CMD ["serve", "-s", "dist", "-l", "5030"]