From fb6972b430de9498984b01ba22dd4446e03ac10d Mon Sep 17 00:00:00 2001 From: Christopher Hase Date: Fri, 11 Apr 2025 09:44:00 +0200 Subject: [PATCH] add http-server part 7.1 --- Dockerfile | 14 ++++++------ backend/server.ts | 2 +- old.3.Dockerfile | 45 +++++++++++++++++++++++++++++++++++++++ old.tsconfig.backend.json | 36 ++++++++++++++++--------------- tsconfig.backend.json | 10 ++++----- tsconfig.broker.json | 14 ++++++++++++ 6 files changed, 91 insertions(+), 30 deletions(-) create mode 100644 old.3.Dockerfile create mode 100644 tsconfig.broker.json diff --git a/Dockerfile b/Dockerfile index 2309a02..d2ff164 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,16 +6,17 @@ WORKDIR /app COPY package*.json ./ COPY tsconfig.json ./ COPY tsconfig.backend.json ./ -COPY . . +COPY tsconfig.broker.json ./ +COPY . . RUN npm install -g npm@11.2.0 RUN npm install -# Kompiliere zuerst den Backend-Code, sodass broker.mjs und andere Dateien erzeugt werden -RUN npx tsc -p tsconfig.backend.json +# Zuerst broker.ts zu broker.mjs kompilieren +#RUN npx tsc -p tsconfig.broker.json -# Danach können wir die Frontend-Dateien auch kompilieren -RUN npx tsc -p tsconfig.frontend.json +# Danach server.ts kompilieren, nachdem broker.mjs existiert +RUN npx tsc -p tsconfig.backend.json # 2. Rust build-Stage FROM forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/devfw-cicd/rust:1.74.0 AS rust-build @@ -34,11 +35,10 @@ COPY --from=build /app/frontend/index.html ./dist/frontend/ COPY --from=rust-build /usr/local/cargo/bin/iching /usr/local/bin/iching # Falls notwendig: Umbenennen von .js zu .mjs -#RUN find dist/backend -name "*.js" -exec bash -c 'mv "$0" "${0%.js}.mjs"' {} \; RUN find dist/frontend -name "*.js" -exec bash -c 'mv "$0" "${0%.js}.mjs"' {} \; # Starte den Backend-Server -RUN node dist/backend/server.mjs & +CMD ["node", "--loader", "ts-node/esm", "/app/dist/backend/server.js"] # Starte den Frontend-Server CMD ["npx", "http-server", "dist/frontend", "-p", "8080", "--mime", "application/javascript=js"] \ No newline at end of file diff --git a/backend/server.ts b/backend/server.ts index 9ad1255..0176057 100644 --- a/backend/server.ts +++ b/backend/server.ts @@ -1,7 +1,7 @@ import express from 'express'; import { executeCommand } from './broker.js'; //import { executeCommand } from './broker'; - +//import { executeCommand } from './broker.mjs'; const app = express(); const port = 8080; diff --git a/old.3.Dockerfile b/old.3.Dockerfile new file mode 100644 index 0000000..9b7cddc --- /dev/null +++ b/old.3.Dockerfile @@ -0,0 +1,45 @@ +# 1. Node.js Build-Stage +FROM forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/devfw-cicd/node:20.18.1 AS build + +WORKDIR /app + +COPY package*.json ./ +COPY tsconfig.json ./ +COPY tsconfig.backend.json ./ +COPY . . + +RUN npm install -g npm@11.2.0 +RUN npm install + +# Kompiliere zuerst den Backend-Code, sodass broker.mjs und andere Dateien erzeugt werden +RUN npx tsc -p tsconfig.backend.json + +# Danach können wir die Frontend-Dateien auch kompilieren +RUN npx tsc -p tsconfig.frontend.json + +# 2. Rust build-Stage +FROM forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/devfw-cicd/rust:1.74.0 AS rust-build +RUN cargo install iching + +# 3. Final runtime +FROM forgejo.edf-bootstrap.cx.fg1.ffm.osc.live/devfw-cicd/node:20.18.1 + +WORKDIR /app + +# Kopiere Node-Modules und alle generierten Dateien +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/dist ./dist +COPY --from=build /app/frontend/index.html ./dist/frontend/ + +COPY --from=rust-build /usr/local/cargo/bin/iching /usr/local/bin/iching + +# Falls notwendig: Umbenennen von .js zu .mjs +#RUN find dist/backend -name "*.js" -exec bash -c 'mv "$0" "${0%.js}.mjs"' {} \; +RUN find dist/frontend -name "*.js" -exec bash -c 'mv "$0" "${0%.js}.mjs"' {} \; + +# Starte den Backend-Server +#RUN node dist/backend/server.js & +CMD ["node", "--loader", "ts-node/esm", "/app/dist/backend/server.js"] + +# Starte den Frontend-Server +CMD ["npx", "http-server", "dist/frontend", "-p", "8080", "--mime", "application/javascript=js"] \ No newline at end of file diff --git a/old.tsconfig.backend.json b/old.tsconfig.backend.json index d21eba5..a861f5d 100644 --- a/old.tsconfig.backend.json +++ b/old.tsconfig.backend.json @@ -1,19 +1,21 @@ { - "extends": "./tsconfig.json", // Falls du eine allgemeine tsconfig hast - "compilerOptions": { - "outDir": "./dist/backend", // Zielordner für die kompilierte Backend-Dateien - "rootDir": "./backend", - "module": "NodeNext", // Setze das Modul auf NodeNext - "moduleResolution": "NodeNext", // NodeNext für die Modulauflösung - "target": "ES2020", // Moderne JavaScript-Syntax verwenden - "esModuleInterop": true, // Interoperabilität mit CommonJS- und ES-Modulen - "allowSyntheticDefaultImports": true, // Synthetische Default-Imports erlauben - "allowImportingTsExtensions": true, - "skipLibCheck": true, // Bibliotheken werden nicht überprüft (Optional) - "emitDeclarationOnly": true, - "composite": true - }, - "include": [ - "backend/**/*.ts" // Nur Dateien im backend-Ordner kompilieren - ] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./dist/backend", // Zielordner für die kompilierte Backend-Dateien + "rootDir": "./backend", // Quellordner + "module": "NodeNext", // Nutze ES-Modul für Node.js + "moduleResolution": "NodeNext", // NodeNext für die Modulauflösung + "target": "ES2020", // Zielversion + "esModuleInterop": true, // Interoperabilität mit CommonJS und ES-Modulen + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "allowJs": true, // Erlaubt es, .js und .mjs Dateien zu importieren + "noEmit": false, // Dateien sollen tatsächlich erzeugt werden (keine Deklarationsdateien) + "resolveJsonModule": true, + "jsx": "react", + "isolatedModules": true + }, + "include": [ + "backend/**/*.ts" + ] } \ No newline at end of file diff --git a/tsconfig.backend.json b/tsconfig.backend.json index d0f4224..db21beb 100644 --- a/tsconfig.backend.json +++ b/tsconfig.backend.json @@ -1,14 +1,14 @@ { - "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./dist/backend", "rootDir": "./backend", - "target": "ES2020", "module": "NodeNext", "moduleResolution": "NodeNext", + "target": "ES2020", "esModuleInterop": true, - "allowSyntheticDefaultImports": true, "skipLibCheck": true }, - "include": ["backend/**/*.ts"] - } \ No newline at end of file + "include": [ + "backend/**/*.ts" + ] +} \ No newline at end of file diff --git a/tsconfig.broker.json b/tsconfig.broker.json new file mode 100644 index 0000000..1b7a0c8 --- /dev/null +++ b/tsconfig.broker.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "outDir": "./dist/backend", + "rootDir": "./backend", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "target": "ES2020", + "esModuleInterop": true, + "skipLibCheck": true + }, + "include": [ + "backend/broker.ts" + ] +} \ No newline at end of file