feat(docker): added Dockerfiles (#57)

This commit is contained in:
Corentin THOMASSET
2025-01-10 15:43:17 +01:00
committed by GitHub
parent 31e0ef577f
commit 23dee2b339
11 changed files with 1795 additions and 1252 deletions

41
docker/Dockerfile Normal file
View 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"]

View 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"]