50 lines
1.4 KiB
Docker
50 lines
1.4 KiB
Docker
# 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"]
|