marian/Dockerfile
2026-01-24 17:51:31 +01:00

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