mirror of
https://github.com/papra-hq/papra.git
synced 2026-01-06 08:59:37 -06:00
feat(docker): added Dockerfiles (#57)
This commit is contained in:
committed by
GitHub
parent
31e0ef577f
commit
23dee2b339
41
docker/Dockerfile
Normal file
41
docker/Dockerfile
Normal file
@@ -0,0 +1,41 @@
|
||||
# Base stage with pnpm
|
||||
FROM node:22-slim AS base
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN corepack enable
|
||||
|
||||
# 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
|
||||
|
||||
RUN pnpm install --frozen-lockfile --ignore-scripts
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm --filter @papra/papra-app-client run build && \
|
||||
pnpm --filter @papra/papra-app-server run build
|
||||
|
||||
RUN pnpm deploy --filter=@papra/papra-app-server --prod /prod/papra-server
|
||||
|
||||
FROM base
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /prod/papra-server ./
|
||||
COPY --from=build /app/apps/papra-client/dist ./public
|
||||
|
||||
EXPOSE 1221
|
||||
|
||||
ENV SERVER_SERVE_PUBLIC_DIR=true
|
||||
ENV DATABASE_URL=file:./app-data/db/db.sqlite
|
||||
ENV DOCUMENT_STORAGE_FILESYSTEM_ROOT=./app-data/documents
|
||||
|
||||
RUN mkdir -p ./app-data/db ./app-data/documents
|
||||
|
||||
CMD ["pnpm", "start:with-migrations"]
|
||||
50
docker/Dockerfile.rootless
Normal file
50
docker/Dockerfile.rootless
Normal file
@@ -0,0 +1,50 @@
|
||||
# Base stage with pnpm
|
||||
FROM node:22-slim AS base
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN corepack enable
|
||||
|
||||
# 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
|
||||
|
||||
RUN pnpm install --frozen-lockfile --ignore-scripts
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm --filter @papra/papra-app-client run build && \
|
||||
pnpm --filter @papra/papra-app-server run build
|
||||
|
||||
RUN pnpm deploy --filter=@papra/papra-app-server --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 SERVER_SERVE_PUBLIC_DIR=true
|
||||
ENV DATABASE_URL=file:./app-data/db/db.sqlite
|
||||
ENV DOCUMENT_STORAGE_FILESYSTEM_ROOT=./app-data/documents
|
||||
|
||||
|
||||
CMD ["pnpm", "start:with-migrations"]
|
||||
Reference in New Issue
Block a user