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 78011627..773348ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,29 @@ -FROM node:20.12.2 +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 + +# sourcen kopieren ausser .dockerignore +COPY . /usr/src/app/ + +# use local sources +RUN npm install && \ + npm run build:prod + +# fresh small image +FROM node:22.20-alpine3.21 AS webmud3 # Setze das Arbeitsverzeichnis im Container WORKDIR /usr/src/app -# Kompilat kopieren -COPY backend/dist ./ +# kopiere NUR das kompilat +COPY --from=ng-build-stage /usr/src/app/backend/dist /usr/src/app -# Installiere die Abhängigkeiten -RUN npm install --no-package-lock --include=prod +# nondev dependencies mitnehmen +RUN npm install --no-package-lock --omit dev # Setze die Umgebungsvariable PORT ENV PORT=5000 @@ -16,4 +32,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/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/wm3_test_mystiker.yml b/dockerfiles/wm3_test_mystiker.yml new file mode 100644 index 00000000..77eb79f0 --- /dev/null +++ b/dockerfiles/wm3_test_mystiker.yml @@ -0,0 +1,38 @@ +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 + CORS_ALLOWED_ORIGINS: 'unitopia.de,www.unitopia.de' + # 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.yml b/dockerfiles/wm_dev_mystiker.yml new file mode 100644 index 00000000..7d883bca --- /dev/null +++ b/dockerfiles/wm_dev_mystiker.yml @@ -0,0 +1,33 @@ +services: + web: + # 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' + HOST: '0.0.0.0' + PORT: 5000 + TELNET_HOST: 'unitopia.de' + TELNET_PORT: 9988 + TELNET_TLS: 'true' + SOCKET_ROOT: '/mysocket.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 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/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, }; 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",