From 2abc81dbc78592a4a50fe73a9d4acf364a025bd5 Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Fri, 2 May 2025 20:53:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=BC=E5=AE=B9=20armv7=20docker=20?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 23 +++++++++---------- packages/backend/Dockerfile | 15 +++++++----- packages/frontend/Dockerfile | 12 ++++++---- packages/frontend/package.json | 2 +- packages/frontend/src/components/Terminal.vue | 2 +- 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index e1fb475..0c770f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2029,6 +2029,15 @@ "node": ">=10.0.0" } }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, "node_modules/@xterm/addon-search": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.15.0.tgz", @@ -8638,16 +8647,6 @@ "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", "license": "MIT" }, - "node_modules/xterm-addon-fit": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz", - "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==", - "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.", - "license": "MIT", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, "node_modules/xterm-addon-web-links": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/xterm-addon-web-links/-/xterm-addon-web-links-0.9.0.tgz", @@ -8832,11 +8831,12 @@ }, "packages/frontend": { "name": "@nexus-terminal/frontend", - "version": "0.2", + "version": "0.2.2", "dependencies": { "@fortawesome/fontawesome-free": "^6.7.2", "@hcaptcha/vue3-hcaptcha": "^1.3.0", "@tailwindcss/vite": "^4.1.4", + "@xterm/addon-fit": "^0.10.0", "@xterm/addon-search": "^0.15.0", "axios": "^1.8.4", "date-fns": "^4.1.0", @@ -8853,7 +8853,6 @@ "vue3-recaptcha2": "^1.8.0", "vuedraggable": "^4.1.0", "xterm": "^5.3.0", - "xterm-addon-fit": "^0.8.0", "xterm-addon-web-links": "^0.9.0" }, "devDependencies": { diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index 3fd2608..8143458 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -1,16 +1,18 @@ -FROM node:20-alpine AS builder +FROM node:20 AS builder WORKDIR /app -COPY package.json package-lock.json* ./ - +# Copy root package files including the lock file +COPY package.json package-lock.json ./ +# Copy workspace package.json files to ensure npm ci works correctly in monorepo COPY packages/backend/package.json ./packages/backend/ COPY packages/frontend/package.json ./packages/frontend/ +COPY packages/rdp/package.json ./packages/rdp/ - -RUN npm ci +# Install dependencies (using install instead of ci for potential armv7/alpine compatibility issues) +RUN npm install COPY packages/backend/src ./packages/backend/src COPY packages/backend/tsconfig.json ./packages/backend/ @@ -21,7 +23,8 @@ RUN npm run build --workspace=@nexus-terminal/backend FROM node:20-alpine -RUN apk add --no-cache --virtual .build-deps python3 make g++ +# Install build dependencies including setuptools for node-gyp +RUN apk add --no-cache --virtual .build-deps python3 py3-setuptools make g++ WORKDIR /app diff --git a/packages/frontend/Dockerfile b/packages/frontend/Dockerfile index f239405..786663c 100644 --- a/packages/frontend/Dockerfile +++ b/packages/frontend/Dockerfile @@ -1,14 +1,18 @@ -FROM node:20-alpine AS builder +FROM node:20 AS builder WORKDIR /app -COPY package.json package-lock.json* ./ +# Copy root package files +COPY package.json package-lock.json ./ -COPY packages/frontend/package.json ./packages/frontend/ +# Copy workspace package.json files to ensure npm ci works correctly in monorepo COPY packages/backend/package.json ./packages/backend/ +COPY packages/frontend/package.json ./packages/frontend/ +COPY packages/rdp/package.json ./packages/rdp/ -RUN npm ci +# Install dependencies (using install instead of ci for potential armv7 compatibility issues) +RUN npm install COPY packages/frontend/src ./packages/frontend/src diff --git a/packages/frontend/package.json b/packages/frontend/package.json index f01cc25..fbdccf5 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -28,7 +28,7 @@ "vue3-recaptcha2": "^1.8.0", "vuedraggable": "^4.1.0", "xterm": "^5.3.0", - "xterm-addon-fit": "^0.8.0", + "@xterm/addon-fit": "^0.10.0", "xterm-addon-web-links": "^0.9.0" }, "devDependencies": { diff --git a/packages/frontend/src/components/Terminal.vue b/packages/frontend/src/components/Terminal.vue index f196dda..4fed5a6 100644 --- a/packages/frontend/src/components/Terminal.vue +++ b/packages/frontend/src/components/Terminal.vue @@ -4,7 +4,7 @@ import { Terminal, ITerminalAddon, IDisposable } from 'xterm'; import { useAppearanceStore } from '../stores/appearance.store'; import { useSettingsStore } from '../stores/settings.store'; import { storeToRefs } from 'pinia'; -import { FitAddon } from 'xterm-addon-fit'; +import { FitAddon } from '@xterm/addon-fit'; // Updated import path import { WebLinksAddon } from 'xterm-addon-web-links'; import { SearchAddon, type ISearchOptions } from '@xterm/addon-search'; import 'xterm/css/xterm.css';