diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4617eb7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# Stage 1: Build (Erstellung des Produktionsbundles) +FROM node:20-alpine AS build + + +# Setze das Arbeitsverzeichnis +WORKDIR /usr/src/app + +# 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"]