mirror of
https://github.com/papra-hq/papra.git
synced 2025-12-21 12:09:39 -06:00
59 lines
1.6 KiB
Docker
59 lines
1.6 KiB
Docker
# Base stage with pnpm
|
|
FROM node:22-slim AS base
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
# Set corepack home to nonroot user home to avoid permission issues
|
|
ENV COREPACK_HOME=/home/nonroot/.corepack
|
|
RUN npm install -g corepack@latest
|
|
RUN corepack enable
|
|
RUN corepack prepare pnpm@10.12.3 --activate
|
|
|
|
# Build stage
|
|
FROM base AS build
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pnpm-lock.yaml ./
|
|
COPY pnpm-workspace.yaml ./
|
|
COPY apps/papra-client/package.json apps/papra-client/package.json
|
|
COPY apps/papra-server/package.json apps/papra-server/package.json
|
|
COPY packages/webhooks/package.json packages/webhooks/package.json
|
|
|
|
RUN pnpm install --frozen-lockfile --ignore-scripts
|
|
|
|
COPY . .
|
|
|
|
RUN pnpm --filter "@papra/app-client..." run build && \
|
|
pnpm --filter "@papra/app-server..." run build
|
|
|
|
RUN pnpm deploy --filter=@papra/app-server --legacy --prod /prod/papra-server
|
|
|
|
FROM base
|
|
|
|
# Create a non-root user and group
|
|
RUN groupadd -r nonroot && useradd -r -g nonroot nonroot && \
|
|
mkdir -p /home/nonroot/.cache/node/corepack && \
|
|
chown -R nonroot:nonroot /home/nonroot
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=build /prod/papra-server ./
|
|
COPY --from=build /app/apps/papra-client/dist ./public
|
|
|
|
RUN mkdir -p ./app-data/db ./app-data/documents && chown -R nonroot:nonroot /app
|
|
|
|
# Switch to nonroot user
|
|
USER nonroot
|
|
|
|
EXPOSE 1221
|
|
|
|
ENV NODE_ENV=production
|
|
ENV SERVER_SERVE_PUBLIC_DIR=true
|
|
ENV DATABASE_URL=file:./app-data/db/db.sqlite
|
|
ENV DOCUMENT_STORAGE_FILESYSTEM_ROOT=./app-data/documents
|
|
ENV PAPRA_CONFIG_DIR=./app-data
|
|
ENV INGESTION_FOLDER_ROOT=./ingestion
|
|
ENV EMAILS_DRY_RUN=true
|
|
ENV CLIENT_BASE_URL=http://localhost:1221
|
|
|
|
CMD ["pnpm", "start:with-migrations"] |