# 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"]
