From 85b61a09c437aba615b16ff08711bddb2fae9652 Mon Sep 17 00:00:00 2001 From: Nystik <236107-Nystik@users.noreply.gitlab.com> Date: Fri, 22 May 2026 15:15:07 +0200 Subject: [PATCH] update docker files --- .dockerignore | 15 ++++++++ .gitignore | 1 + apps/ignis-server/Dockerfile | 50 ++++++++++++++++++------- apps/ignis-server/docker-compose.yml | 4 +- apps/ignis-server/scripts/entrypoint.sh | 2 +- 5 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e288e25 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +node_modules +**/node_modules +.git +.gitignore +.gitattributes +.vscode +.prettierrc +investigation +vaults +demo-vaults +data +tmp +**/dist +packages/bridge-plugin/main.js +apps/ignis-server/server/plugins/*/plugin/main.js diff --git a/.gitignore b/.gitignore index 24a2d70..f1c2415 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ packages/*/dist/ packages/bridge-plugin/main.js apps/ignis-server/server/plugins/*/plugin/main.js demo-vaults/ +data/ diff --git a/apps/ignis-server/Dockerfile b/apps/ignis-server/Dockerfile index afcf5d2..95592fc 100644 --- a/apps/ignis-server/Dockerfile +++ b/apps/ignis-server/Dockerfile @@ -1,15 +1,23 @@ -# Build shim-loader.js +# Build stage. +# Runs from the repo root as build context so workspace symlinks resolve. +# Copies workspace package.jsons first for cache-friendly npm ci. FROM node:22-slim AS build -WORKDIR /build +WORKDIR /app COPY package.json package-lock.json ./ +COPY packages/services/package.json ./packages/services/ +COPY packages/shim/package.json ./packages/shim/ +COPY packages/ui/package.json ./packages/ui/ +COPY packages/bridge-plugin/package.json ./packages/bridge-plugin/ +COPY packages/server-core/package.json ./packages/server-core/ +COPY apps/ignis-server/package.json ./apps/ignis-server/ + RUN npm ci --ignore-scripts COPY build.js ./ -COPY src/ ./src/ -COPY plugin/src/ ./plugin/src/ -COPY server/plugins/ ./server/plugins/ +COPY packages/ ./packages/ +COPY apps/ignis-server/ ./apps/ignis-server/ RUN npm run build @@ -25,18 +33,34 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ WORKDIR /app +# Workspace package.jsons + lockfile so npm ci sets up the @ignis/* symlinks. COPY package.json package-lock.json ./ +COPY packages/services/package.json ./packages/services/ +COPY packages/shim/package.json ./packages/shim/ +COPY packages/ui/package.json ./packages/ui/ +COPY packages/bridge-plugin/package.json ./packages/bridge-plugin/ +COPY packages/server-core/package.json ./packages/server-core/ +COPY apps/ignis-server/package.json ./apps/ignis-server/ + RUN npm ci --omit=dev --ignore-scripts -COPY server/ ./server/ -COPY scripts/ ./scripts/ +# Runtime sources: the server, entrypoint script, repo-rooted images, and the server-core JS that gets required from the server at runtime. +COPY apps/ignis-server/server/ ./apps/ignis-server/server/ +COPY apps/ignis-server/scripts/ ./apps/ignis-server/scripts/ COPY images/ ./images/ -COPY plugin/ ./plugin/ -COPY --from=build /build/dist ./dist -COPY --from=build /build/plugin/main.js ./plugin/main.js -COPY --from=build /build/server/plugins/headless-sync/plugin/main.js ./server/plugins/headless-sync/plugin/main.js +COPY packages/server-core/src/ ./packages/server-core/src/ -RUN chmod +x /app/scripts/entrypoint.sh +# Bridge plugin: manifest + styles for auto-install into vaults; built main.js comes from the build stage. +COPY packages/bridge-plugin/manifest.json ./packages/bridge-plugin/ +COPY packages/bridge-plugin/styles.css ./packages/bridge-plugin/ + +# Built artifacts from the build stage. +COPY --from=build /app/packages/shim/dist/shim-loader.js ./packages/shim/dist/shim-loader.js +COPY --from=build /app/packages/ui/dist/ignis-ui.js ./packages/ui/dist/ignis-ui.js +COPY --from=build /app/packages/bridge-plugin/main.js ./packages/bridge-plugin/main.js +COPY --from=build /app/apps/ignis-server/server/plugins/headless-sync/plugin/main.js ./apps/ignis-server/server/plugins/headless-sync/plugin/main.js + +RUN chmod +x /app/apps/ignis-server/scripts/entrypoint.sh ENV PORT=8080 ENV VAULT_ROOT=/vaults @@ -50,4 +74,4 @@ EXPOSE 8080 VOLUME /vaults VOLUME /app/obsidian-app -ENTRYPOINT ["/app/scripts/entrypoint.sh"] \ No newline at end of file +ENTRYPOINT ["/app/apps/ignis-server/scripts/entrypoint.sh"] diff --git a/apps/ignis-server/docker-compose.yml b/apps/ignis-server/docker-compose.yml index 4821d86..1c25985 100644 --- a/apps/ignis-server/docker-compose.yml +++ b/apps/ignis-server/docker-compose.yml @@ -1,6 +1,8 @@ services: ignis: - build: . + build: + context: ../.. + dockerfile: apps/ignis-server/Dockerfile ports: - "8082:8080" environment: diff --git a/apps/ignis-server/scripts/entrypoint.sh b/apps/ignis-server/scripts/entrypoint.sh index e90e79c..3ba813d 100644 --- a/apps/ignis-server/scripts/entrypoint.sh +++ b/apps/ignis-server/scripts/entrypoint.sh @@ -68,4 +68,4 @@ else fi # Run as the determined user -exec gosu "$RUN_USER" node /app/server/index.js \ No newline at end of file +exec gosu "$RUN_USER" node /app/apps/ignis-server/server/index.js \ No newline at end of file