From a808f0680c2ae4b108d686f571b495a698ee9acd Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 25 Apr 2025 12:15:02 +0300 Subject: [PATCH] fix(nx/docker): wrong native for better-sqlite3 --- apps/server/Dockerfile | 32 ++++++----- apps/server/package.json | 95 ++++++++++++++++----------------- apps/server/pnpm-workspace.yaml | 3 ++ 3 files changed, 69 insertions(+), 61 deletions(-) create mode 100644 apps/server/pnpm-workspace.yaml diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index 6ab36fba5..1486e2647 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -1,17 +1,23 @@ +FROM node:22.14.0-alpine AS builder + RUN corepack enable + + # Install native dependencies since we might be building cross-platform. + WORKDIR /usr/src/app + COPY /apps/server/dist /apps/server/pnpm-workspace.yaml /usr/src/app/ + RUN rm -r node_modules/better-sqlite3 && pnpm install --frozen-lockfile --prod && pnpm rebuild + FROM node:22.14.0-alpine + # Install runtime dependencies + RUN apk add --no-cache su-exec shadow -# Install runtime dependencies -RUN apk add --no-cache su-exec shadow + WORKDIR /usr/src/app + COPY --from=builder /usr/src/app /usr/src/app + COPY /apps/server/start-docker.sh /usr/src/app -WORKDIR /usr/src/app + # Add application user + RUN adduser -s /bin/false node; exit 0 -COPY /apps/server/dist /usr/src/app -COPY /apps/server/start-docker.sh /usr/src/app - -# Add application user -RUN adduser -s /bin/false node; exit 0 - -# Configure container -EXPOSE 8080 -CMD [ "sh", "./start-docker.sh" ] -HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js \ No newline at end of file + # Configure container + EXPOSE 8080 + CMD [ "sh", "./start-docker.sh" ] + HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index b634a069a..a84fe55a1 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -2,7 +2,53 @@ "name": "@triliumnext/server", "version": "0.0.1", "private": true, - "dependencies": { + "dependencies": { + "better-sqlite3": "11.9.1" + }, + "devDependencies": { + "@electron/remote": "2.1.2", + "@excalidraw/excalidraw": "0.18.0", + "@highlightjs/cdn-assets": "11.11.1", + "@types/archiver": "6.0.3", + "@types/better-sqlite3": "7.6.13", + "@types/cheerio": "0.22.35", + "@types/cls-hooked": "4.3.9", + "@types/compression": "1.7.5", + "@types/cookie-parser": "1.4.8", + "@types/debounce": "1.2.4", + "@types/ejs": "3.1.5", + "@types/escape-html": "1.0.4", + "@types/express-http-proxy": "1.6.6", + "@types/express-session": "1.18.1", + "@types/fs-extra": "11.0.4", + "@types/html": "1.0.4", + "@types/ini": "4.1.1", + "@types/js-yaml": "4.0.9", + "@types/jsdom": "21.1.7", + "@types/mime-types": "2.1.4", + "@types/multer": "1.4.12", + "@types/safe-compare": "1.1.2", + "@types/sanitize-html": "2.15.0", + "@types/sax": "1.2.7", + "@types/serve-favicon": "2.5.7", + "@types/serve-static": "1.15.7", + "@types/session-file-store": "1.2.5", + "@types/stream-throttle": "0.1.4", + "@types/supertest": "6.0.3", + "@types/swagger-ui-express": "4.1.8", + "@types/tmp": "0.2.6", + "@types/turndown": "5.0.5", + "@types/ws": "8.18.1", + "@types/xml2js": "0.4.14", + "autocomplete.js": "0.38.1", + "boxicons": "2.1.4", + "codemirror": "5.65.19", + "express-http-proxy": "2.1.1", + "jquery": "3.7.1", + "jquery-hotkeys": "0.2.2", + "jquery.fancytree": "2.38.5", + "katex": "0.16.22", + "normalize.css": "8.0.1", "@anthropic-ai/sdk": "0.39.0", "@braintree/sanitize-url": "7.1.1", "@triliumnext/commons": "workspace:*", @@ -11,7 +57,6 @@ "archiver": "7.0.1", "async-mutex": "0.5.0", "axios": "1.8.4", - "better-sqlite3": "11.9.1", "bindings": "1.5.0", "chardet": "2.1.0", "cheerio": "1.0.0", @@ -76,52 +121,6 @@ "xml2js": "0.6.2", "yauzl": "3.2.0" }, - "devDependencies": { - "@electron/remote": "2.1.2", - "@excalidraw/excalidraw": "0.18.0", - "@highlightjs/cdn-assets": "11.11.1", - "@types/archiver": "6.0.3", - "@types/better-sqlite3": "7.6.13", - "@types/cheerio": "0.22.35", - "@types/cls-hooked": "4.3.9", - "@types/compression": "1.7.5", - "@types/cookie-parser": "1.4.8", - "@types/debounce": "1.2.4", - "@types/ejs": "3.1.5", - "@types/escape-html": "1.0.4", - "@types/express-http-proxy": "1.6.6", - "@types/express-session": "1.18.1", - "@types/fs-extra": "11.0.4", - "@types/html": "1.0.4", - "@types/ini": "4.1.1", - "@types/js-yaml": "4.0.9", - "@types/jsdom": "21.1.7", - "@types/mime-types": "2.1.4", - "@types/multer": "1.4.12", - "@types/safe-compare": "1.1.2", - "@types/sanitize-html": "2.15.0", - "@types/sax": "1.2.7", - "@types/serve-favicon": "2.5.7", - "@types/serve-static": "1.15.7", - "@types/session-file-store": "1.2.5", - "@types/stream-throttle": "0.1.4", - "@types/supertest": "6.0.3", - "@types/swagger-ui-express": "4.1.8", - "@types/tmp": "0.2.6", - "@types/turndown": "5.0.5", - "@types/ws": "8.18.1", - "@types/xml2js": "0.4.14", - "autocomplete.js": "0.38.1", - "boxicons": "2.1.4", - "codemirror": "5.65.19", - "electron": "35.1.5", - "express-http-proxy": "2.1.1", - "jquery": "3.7.1", - "jquery-hotkeys": "0.2.2", - "jquery.fancytree": "2.38.5", - "katex": "0.16.22", - "normalize.css": "8.0.1" - }, "nx": { "targets": { "serve": { diff --git a/apps/server/pnpm-workspace.yaml b/apps/server/pnpm-workspace.yaml new file mode 100644 index 000000000..281a35cf0 --- /dev/null +++ b/apps/server/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +nodeLinker: isolated +onlyBuiltDependencies: + - better-sqlite3