From 2d6cb9cf9e68a2c28297de7483d5c73f5bac9a18 Mon Sep 17 00:00:00 2001 From: Oliver Weimar-Drese Date: Sat, 11 Oct 2025 12:28:05 +0200 Subject: [PATCH 1/5] docker setup, local ok, uniserver to be tested after issue #145 solved --- Dockerfile | 9 ++++++-- dockerfiles/README.md | 4 ++++ dockerfiles/wm_dev_mystiker.dockerfile | 23 ++++++++++++++++++ dockerfiles/wm_dev_mystiker.yml | 32 ++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 dockerfiles/wm_dev_mystiker.dockerfile create mode 100644 dockerfiles/wm_dev_mystiker.yml diff --git a/Dockerfile b/Dockerfile index 78011627..ff615f6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,8 +3,13 @@ FROM node:20.12.2 # Setze das Arbeitsverzeichnis im Container WORKDIR /usr/src/app -# Kompilat kopieren -COPY backend/dist ./ +# Clone specific branch from GitHub +RUN git clone -b develop https://github.com/unitopia-de/webmud3.git . && \ + npm install && \ + npm run build:prod && \ + mv backend/dist/* . && \ + rm -rf frontend \ + rm -rf backend # Installiere die Abhängigkeiten RUN npm install --no-package-lock --include=prod diff --git a/dockerfiles/README.md b/dockerfiles/README.md index 1b3ab21d..75c43c46 100644 --- a/dockerfiles/README.md +++ b/dockerfiles/README.md @@ -5,6 +5,8 @@ ### To build the docker images +docker build -f Dockerfile -t myonara/webmud3:develop . + docker build -f Dockerfile -t myonara/webmud3:latest . docker build -f dockerfiles/ng_unitopia_test.dockerfile -t myonara/webmud3:unitopiatest . @@ -32,6 +34,8 @@ docker run -d -p 50000:80 --name helloplain -P nginxdemos/hello:plain-text ### Alternative podman compose #### to start +docker compose -f dockerfiles/wm_dev_mystiker.yml -p webmud3dev up -d + podman-compose -f dockerfiles/w3_docker_compose.yml -p webmud_unitopia up -d podman-compose -f dockerfiles/w3_docker_compose_sb.yml -p webmud_seifenblase up -d diff --git a/dockerfiles/wm_dev_mystiker.dockerfile b/dockerfiles/wm_dev_mystiker.dockerfile new file mode 100644 index 00000000..919b6926 --- /dev/null +++ b/dockerfiles/wm_dev_mystiker.dockerfile @@ -0,0 +1,23 @@ +FROM node:20.12.2 + +# Setze das Arbeitsverzeichnis im Container +WORKDIR /usr/src/app + +# Clone specific branch from GitHub +RUN git clone -b develop https://github.com/mystiker/webmud3.git . && \ + npm run build:prod && \ + mv backend/dist/* . && \ + rm -rf frontend \ + rm -rf backend + +# Installiere die Abhängigkeiten +RUN npm install --no-package-lock --include=prod + +# Setze die Umgebungsvariable PORT +ENV PORT=5000 + +# Exponiere den Port, auf dem die Anwendung läuft +EXPOSE 5000 + +# Starte die Anwendung +CMD ["node", "main.js"] \ No newline at end of file diff --git a/dockerfiles/wm_dev_mystiker.yml b/dockerfiles/wm_dev_mystiker.yml new file mode 100644 index 00000000..5b173aa5 --- /dev/null +++ b/dockerfiles/wm_dev_mystiker.yml @@ -0,0 +1,32 @@ +services: + web: + # replace username/repo:tag with your name and image details + image: myonara/webmud3:develop + environment: + NODE_ENV: 'production' + HOST: '0.0.0.0' + PORT: 5000 + TELNET_HOST: 'unitopia.de' + TELNET_PORT: 9988 + TELNET_TLS: 'true' + SOCKET_ROOT: '/socket.io' + SOCKET_TIMEOUT: 900000 + # command: --tls-cert=/run/secrets/cert.pem --tls-key=/run/secrets/privkey.pem + deploy: + replicas: 1 + resources: + limits: + cpus: "0.1" + memory: 50M + restart_policy: + condition: on-failure + delay: 20s + max_attempts: 2 + window: 3600s + ports: + - "5000:5000" + networks: + - webnet +networks: + webnet: + driver: bridge From e567458c4a455cdc352f2ea8637c9f40e0b169fe Mon Sep 17 00:00:00 2001 From: Oliver Weimar-Drese Date: Sat, 11 Oct 2025 15:45:57 +0200 Subject: [PATCH 2/5] mysocket stuff --- dockerfiles/wm_dev_mystiker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfiles/wm_dev_mystiker.yml b/dockerfiles/wm_dev_mystiker.yml index 5b173aa5..86cc65cf 100644 --- a/dockerfiles/wm_dev_mystiker.yml +++ b/dockerfiles/wm_dev_mystiker.yml @@ -9,7 +9,7 @@ services: TELNET_HOST: 'unitopia.de' TELNET_PORT: 9988 TELNET_TLS: 'true' - SOCKET_ROOT: '/socket.io' + SOCKET_ROOT: '/mysocket.io' SOCKET_TIMEOUT: 900000 # command: --tls-cert=/run/secrets/cert.pem --tls-key=/run/secrets/privkey.pem deploy: From 310254fd258852c16dd30b73285047845028ff66 Mon Sep 17 00:00:00 2001 From: Oliver Weimar-Drese Date: Sat, 11 Oct 2025 17:49:27 +0200 Subject: [PATCH 3/5] dockerfiles reworked --- .dockerignore | 68 ++++++++++++++++++++++++++ Dockerfile | 31 +++++++----- backend/package.json | 10 ++-- dockerfiles/wm3_test_mystiker.yml | 37 ++++++++++++++ dockerfiles/wm_dev_mystiker.dockerfile | 23 --------- dockerfiles/wm_dev_mystiker.yml | 3 +- frontend/package.json | 2 +- package.json | 2 +- 8 files changed, 134 insertions(+), 42 deletions(-) create mode 100644 .dockerignore create mode 100644 dockerfiles/wm3_test_mystiker.yml delete mode 100644 dockerfiles/wm_dev_mystiker.dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3167b1f7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,68 @@ +# ignores all .nx files - generated due a bug in dependencies - see https://github.com/nrwl/nx-console/issues/1975 +.nx + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ +dist/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +# gnomi.txt +Gnomi.txt diff --git a/Dockerfile b/Dockerfile index ff615f6c..a579eaa4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,26 @@ -FROM node:20.12.2 +FROM node:20.19-alpine3.20 AS ng-build-stage # Setze das Arbeitsverzeichnis im Container WORKDIR /usr/src/app -# Clone specific branch from GitHub -RUN git clone -b develop https://github.com/unitopia-de/webmud3.git . && \ - npm install && \ - npm run build:prod && \ - mv backend/dist/* . && \ - rm -rf frontend \ - rm -rf backend +# sourcen kopieren ausser .dockerignore +COPY . /usr/src/app/ -# Installiere die Abhängigkeiten -RUN npm install --no-package-lock --include=prod +# use local sources +RUN npm install && \ + npm run build:prod + +# fresh small image +FROM node:20.19-alpine3.20 AS webmud3 + +# Setze das Arbeitsverzeichnis im Container +WORKDIR /usr/src/app + +# kopiere NUR das kompilat +COPY --from=ng-build-stage /usr/src/app/backend/dist /usr/src/app + +# nondev dependencies mitnehmen +RUN npm install --no-package-lock --omit dev # Setze die Umgebungsvariable PORT ENV PORT=5000 @@ -21,4 +29,5 @@ ENV PORT=5000 EXPOSE 5000 # Starte die Anwendung -CMD ["node", "main.js"] \ No newline at end of file +CMD ["node", "main.js"] +# testing CMD ["/bin/sh"] diff --git a/backend/package.json b/backend/package.json index 2853bd3c..47595d48 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,7 +3,7 @@ "version": "1.0.0-alpha", "description": "Webmud3 Backend Service", "engines": { - "node": "20.12.2" + "node": ">=20.12.2" }, "repository": { "type": "git", @@ -34,9 +34,11 @@ "express": "~4.19.2", "socket.io": "~4.7.5", "socket.io-client": "~4.7.5", + "source-map-support": "~0.5.21", "telnet-stream": "~1.1.0", "url": "~0.11.3", - "uuid": "~9.0.1" + "uuid": "~9.0.1", + "winston": "~3.13.0" }, "devDependencies": { "@types/cookie-session": "~2.0.49", @@ -56,11 +58,9 @@ "jest": "~29.7.0", "prettier": "~3.2.5", "rimraf": "~5.0.7", - "source-map-support": "~0.5.21", "ts-jest": "~29.1.2", "ts-jest-mock-import-meta": "^1.2.0", - "typescript": "~5.4.5", - "winston": "~3.13.0" + "typescript": "~5.4.5" }, "type": "module", "author": "Myonara", diff --git a/dockerfiles/wm3_test_mystiker.yml b/dockerfiles/wm3_test_mystiker.yml new file mode 100644 index 00000000..93d764fc --- /dev/null +++ b/dockerfiles/wm3_test_mystiker.yml @@ -0,0 +1,37 @@ +version: "3.7" +services: + web: + image: myonara/webmud3:develop + environment: + NODE_ENV: 'production' + HOST: '0.0.0.0' + PORT: 5000 + TELNET_HOST: 'unitopia.de' + TELNET_PORT: 9988 + TELNET_TLS: 'true' + SOCKET_ROOT: '/mysocket-test.io' + SOCKET_TIMEOUT: 900000 + # volumes: + # - "/UNItopia/ftpwww/webmud3/run:/run" + deploy: + replicas: 1 + resources: + limits: + cpus: "0.1" + memory: 50M + labels: + com.docker.lb.hosts: www.unitopia.de + com.docker.lb.network: webnet + com.docker.lb.port: 2019 + restart_policy: + condition: on-failure + delay: 20s + max_attempts: 2 + window: 3600s + ports: + - "2019:5000" + networks: + - webnet +networks: + webnet: + attachable: true diff --git a/dockerfiles/wm_dev_mystiker.dockerfile b/dockerfiles/wm_dev_mystiker.dockerfile deleted file mode 100644 index 919b6926..00000000 --- a/dockerfiles/wm_dev_mystiker.dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM node:20.12.2 - -# Setze das Arbeitsverzeichnis im Container -WORKDIR /usr/src/app - -# Clone specific branch from GitHub -RUN git clone -b develop https://github.com/mystiker/webmud3.git . && \ - npm run build:prod && \ - mv backend/dist/* . && \ - rm -rf frontend \ - rm -rf backend - -# Installiere die Abhängigkeiten -RUN npm install --no-package-lock --include=prod - -# Setze die Umgebungsvariable PORT -ENV PORT=5000 - -# Exponiere den Port, auf dem die Anwendung läuft -EXPOSE 5000 - -# Starte die Anwendung -CMD ["node", "main.js"] \ No newline at end of file diff --git a/dockerfiles/wm_dev_mystiker.yml b/dockerfiles/wm_dev_mystiker.yml index 86cc65cf..7d883bca 100644 --- a/dockerfiles/wm_dev_mystiker.yml +++ b/dockerfiles/wm_dev_mystiker.yml @@ -1,6 +1,7 @@ services: web: - # replace username/repo:tag with your name and image details + # docker build -f Dockerfile -t myonara/webmud3:develop . + # docker compose -f dockerfiles/wm_dev_mystiker.yml -p webmud3dev up -d image: myonara/webmud3:develop environment: NODE_ENV: 'production' diff --git a/frontend/package.json b/frontend/package.json index ed6fe178..ee9c6289 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,7 +3,7 @@ "version": "1.0.0-alpha", "description": "Webmud3 Frontend", "engines": { - "node": "20.12.2" + "node": ">=20.12.2" }, "scripts": { "format": "prettier --write \"src/**/*.ts\"", diff --git a/package.json b/package.json index 4e40c16f..3305b539 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "webmud3", "version": "1.0.0-alpha", "engines": { - "node": "20.12.2" + "node": ">=20.12.2" }, "workspaces": [ "frontend", From 72f005fe96b6dae19a56b4adab3a5cf090f49167 Mon Sep 17 00:00:00 2001 From: Oliver Weimar-Drese Date: Sat, 11 Oct 2025 20:41:49 +0200 Subject: [PATCH 4/5] docker und env final --- dockerfiles/wm3_test_mystiker.yml | 1 + frontend/src/environments/environment.prod.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dockerfiles/wm3_test_mystiker.yml b/dockerfiles/wm3_test_mystiker.yml index 93d764fc..77eb79f0 100644 --- a/dockerfiles/wm3_test_mystiker.yml +++ b/dockerfiles/wm3_test_mystiker.yml @@ -11,6 +11,7 @@ services: TELNET_TLS: 'true' SOCKET_ROOT: '/mysocket-test.io' SOCKET_TIMEOUT: 900000 + CORS_ALLOWED_ORIGINS: 'unitopia.de,www.unitopia.de' # volumes: # - "/UNItopia/ftpwww/webmud3/run:/run" deploy: diff --git a/frontend/src/environments/environment.prod.ts b/frontend/src/environments/environment.prod.ts index 6b9c5aa1..99e2390e 100644 --- a/frontend/src/environments/environment.prod.ts +++ b/frontend/src/environments/environment.prod.ts @@ -2,5 +2,5 @@ import { Environment } from './environment.interface'; export const environment: Environment = { production: true, - backendUrl: () => window.location.origin, + backendUrl: () => window.location.href, }; From fd40c7638823e06f89d767c420b94d79803b19b0 Mon Sep 17 00:00:00 2001 From: Oliver Weimar-Drese Date: Sat, 11 Oct 2025 21:28:24 +0200 Subject: [PATCH 5/5] node v22.20 in Dockerfile --- Dockerfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a579eaa4..773348ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,7 @@ -FROM node:20.19-alpine3.20 AS ng-build-stage +FROM node:22.20-alpine3.21 AS ng-build-stage + +# node:20.19-alpine3.20 +# 22.20-alpine3.21 # Setze das Arbeitsverzeichnis im Container WORKDIR /usr/src/app @@ -11,7 +14,7 @@ RUN npm install && \ npm run build:prod # fresh small image -FROM node:20.19-alpine3.20 AS webmud3 +FROM node:22.20-alpine3.21 AS webmud3 # Setze das Arbeitsverzeichnis im Container WORKDIR /usr/src/app