Files
ReadaBook/Dockerfile

41 lines
1.3 KiB
Docker

FROM node:22-bookworm-slim AS base
ENV PNPM_HOME=/pnpm
ENV PATH=$PNPM_HOME:$PATH
RUN corepack enable
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./
COPY packages/shared/package.json packages/shared/package.json
COPY apps/api/package.json apps/api/package.json
COPY apps/web/package.json apps/web/package.json
RUN pnpm install --frozen-lockfile
FROM deps AS build
COPY packages packages
COPY apps/api apps/api
RUN pnpm --filter @readabook/shared build
RUN pnpm --filter @readabook/api build
RUN pnpm --filter @readabook/api deploy --prod /prod
FROM node:22-bookworm-slim AS runtime
ARG OCI_IMAGE_CREATED
ARG OCI_IMAGE_REVISION
ARG OCI_IMAGE_VERSION=latest
LABEL org.opencontainers.image.title="ReadaBook API" \
org.opencontainers.image.description="ReadaBook NestJS API service" \
org.opencontainers.image.source="https://gitea.anthonybouteiller.ovh/blomios/ReadaBook" \
org.opencontainers.image.created="${OCI_IMAGE_CREATED}" \
org.opencontainers.image.revision="${OCI_IMAGE_REVISION}" \
org.opencontainers.image.version="${OCI_IMAGE_VERSION}"
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3000
ENV DATABASE_PATH=/data/readabook.sqlite
ENV STORAGE_DIR=/data/storage
WORKDIR /app
COPY --from=build /prod ./
EXPOSE 3000
VOLUME ["/data", "/library"]
CMD ["node", "dist/main.js"]