The server requires @docmost/git-sync (main: ./build/index.js) at runtime, but the installer stage copied only editor-ext and mcp — so the image built fine and then crashed on startup with `Cannot find module '@docmost/git-sync'`. Copy the package's freshly-built build/ + package.json, mirroring the mcp/editor-ext COPY lines. (Addresses review finding #1 on PR #119.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
1.9 KiB
Docker
64 lines
1.9 KiB
Docker
FROM node:22-slim AS base
|
|
LABEL org.opencontainers.image.source="https://github.com/vvzvlad/gitmost"
|
|
|
|
RUN npm install -g pnpm@10.4.0
|
|
|
|
FROM base AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY . .
|
|
|
|
RUN pnpm install --frozen-lockfile
|
|
# Version string shown in the UI (computed outside Docker because .git is not in the build context).
|
|
ARG APP_VERSION=""
|
|
ENV APP_VERSION=$APP_VERSION
|
|
RUN pnpm build
|
|
|
|
FROM base AS installer
|
|
|
|
# git: required by the git-sync VaultGit (shells out to git)
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl bash git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy apps
|
|
COPY --from=builder /app/apps/server/dist /app/apps/server/dist
|
|
COPY --from=builder /app/apps/client/dist /app/apps/client/dist
|
|
COPY --from=builder /app/apps/server/package.json /app/apps/server/package.json
|
|
|
|
# Copy packages
|
|
COPY --from=builder /app/packages/editor-ext/dist /app/packages/editor-ext/dist
|
|
COPY --from=builder /app/packages/editor-ext/package.json /app/packages/editor-ext/package.json
|
|
COPY --from=builder /app/packages/mcp/build /app/packages/mcp/build
|
|
COPY --from=builder /app/packages/mcp/package.json /app/packages/mcp/package.json
|
|
# git-sync: the server requires @docmost/git-sync at runtime; without these the
|
|
# image starts and crashes on `require('@docmost/git-sync')`. Built fresh by the
|
|
# builder's `pnpm build` (nx builds the package's tsc `build` target).
|
|
COPY --from=builder /app/packages/git-sync/build /app/packages/git-sync/build
|
|
COPY --from=builder /app/packages/git-sync/package.json /app/packages/git-sync/package.json
|
|
|
|
# Copy root package files
|
|
COPY --from=builder /app/package.json /app/package.json
|
|
COPY --from=builder /app/pnpm*.yaml /app/
|
|
COPY --from=builder /app/.npmrc /app/.npmrc
|
|
|
|
# Copy patches
|
|
COPY --from=builder /app/patches /app/patches
|
|
|
|
RUN chown -R node:node /app
|
|
|
|
USER node
|
|
|
|
RUN pnpm install --frozen-lockfile --prod
|
|
|
|
RUN mkdir -p /app/data/storage
|
|
|
|
VOLUME ["/app/data/storage"]
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["pnpm", "start"]
|