b8d986cbd6
* fix: also tag Docker image as latest on main branch push Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/bbc0f66e-7488-4d9d-976b-434588b3faa8 * fix: production Dockerfile missing patches/.env.web; add compose.dev.yaml for dev hot-reload Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/e27bba4e-b8ea-4694-b44d-6308aa778d41 * fix: add devcontainer to init submodules; add clear Dockerfile error when submodules missing Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/16d24ae0-d2e8-4523-b47e-4969dd587c50 * simplify production-stage: COPY --from=build /app /app instead of selective copies Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/356fabe4-f944-48b6-a409-41640480d52f * fix: add CI=true to dev compose to prevent pnpm no-TTY abort Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/ddc30fef-2c76-452d-aad6-d688ca912a1a * fix: add semver Docker image version tags on release Agent-Logs-Url: https://github.com/pourmand1376/readest/sessions/18cbc3c6-ba92-4e63-bef9-93dcf6698c21 --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
60 lines
2.5 KiB
Docker
60 lines
2.5 KiB
Docker
FROM docker.io/library/node:24-slim@sha256:24dc26ef1e3c3690f27ebc4136c9c186c3133b25563ae4d7f0692e4d1fe5db0e AS dependencies
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack enable
|
|
RUN corepack prepare pnpm@11.1.1 --activate
|
|
WORKDIR /app
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
|
COPY apps/readest-app/package.json ./apps/readest-app/
|
|
COPY patches/ ./patches/
|
|
COPY packages/ ./packages/
|
|
RUN --mount=type=cache,id=pnpm,sharing=locked,target=/pnpm/store pnpm install --frozen-lockfile
|
|
RUN test -f packages/foliate-js/vendor/pdfjs/annotation_layer_builder.css \
|
|
&& test -d packages/simplecc-wasm/dist/web \
|
|
|| { printf '\nERROR: Required git submodules are not initialized in the source directory.\nEnsure submodules are initialized before running docker build.\nRun: git submodule update --init packages/foliate-js packages/simplecc-wasm\n\n'; exit 1; }
|
|
RUN pnpm --filter @readest/readest-app setup-vendors
|
|
|
|
FROM docker.io/library/node:24-slim@sha256:24dc26ef1e3c3690f27ebc4136c9c186c3133b25563ae4d7f0692e4d1fe5db0e AS development-stage
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack enable
|
|
RUN corepack prepare pnpm@11.1.1 --activate
|
|
WORKDIR /app
|
|
COPY --from=dependencies /app /app
|
|
COPY . .
|
|
WORKDIR /app/apps/readest-app
|
|
EXPOSE 3000
|
|
ENTRYPOINT ["pnpm", "dev-web", "-H", "0.0.0.0"]
|
|
|
|
FROM docker.io/library/node:24-slim@sha256:24dc26ef1e3c3690f27ebc4136c9c186c3133b25563ae4d7f0692e4d1fe5db0e AS build
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack enable
|
|
RUN corepack prepare pnpm@11.1.1 --activate
|
|
WORKDIR /app
|
|
ARG NEXT_PUBLIC_SUPABASE_URL
|
|
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
|
|
ARG NEXT_PUBLIC_APP_PLATFORM
|
|
ARG NEXT_PUBLIC_API_BASE_URL
|
|
ARG NEXT_PUBLIC_OBJECT_STORAGE_TYPE
|
|
ARG NEXT_PUBLIC_STORAGE_FIXED_QUOTA
|
|
ARG NEXT_PUBLIC_TRANSLATION_FIXED_QUOTA
|
|
COPY --from=dependencies /app/node_modules /app/node_modules
|
|
COPY --from=dependencies /app/apps/readest-app/node_modules /app/apps/readest-app/node_modules
|
|
COPY --from=dependencies /app/apps/readest-app/public/vendor /app/apps/readest-app/public/vendor
|
|
COPY --from=dependencies /app/packages/foliate-js/node_modules /app/packages/foliate-js/node_modules
|
|
COPY . .
|
|
WORKDIR /app/apps/readest-app
|
|
RUN pnpm build-web
|
|
|
|
FROM docker.io/library/node:24-slim@sha256:24dc26ef1e3c3690f27ebc4136c9c186c3133b25563ae4d7f0692e4d1fe5db0e AS production-stage
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack enable
|
|
RUN corepack prepare pnpm@11.1.1 --activate
|
|
WORKDIR /app
|
|
COPY --from=build /app /app
|
|
WORKDIR /app/apps/readest-app
|
|
ENTRYPOINT ["pnpm", "start-web", "-H", "0.0.0.0"]
|
|
EXPOSE 3000
|