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