chore: dockerfile update

This commit is contained in:
2026-06-17 22:48:09 +05:30
parent bc31b2508b
commit 224a33c553
5 changed files with 83 additions and 30 deletions
+28 -10
View File
@@ -1,22 +1,40 @@
# syntax=docker/dockerfile:1.7
#
# PayloadCMS production image. Built and run by docker-compose.
# `corepack` reads the `packageManager` field from apps/cms/package.json
# so we don't pin a version here.
FROM node:20-alpine AS base
RUN corepack enable && corepack prepare [email protected] --activate
WORKDIR /app
RUN corepack enable
WORKDIR /repo
# ---- deps -----------------------------------------------------------------
# Install ALL workspace deps at the root so the `apps/cms` package can
# resolve its siblings (@payloadcms/*, next, react, etc.) and the root
# tooling (prettier) is also available.
FROM base AS deps
COPY package.json pnpm-lock.yaml* ./
COPY ../../package.json ../../pnpm-workspace.yaml* ../../ ./
RUN pnpm install --frozen-lockfile
COPY pnpm-workspace.yaml package.json ./
COPY apps/cms/package.json ./apps/cms/package.json
COPY apps/web/package.json ./apps/web/package.json
# pnpm-lock.yaml is generated locally; fall back gracefully on first build.
COPY pnpm-lock.yaml* ./
RUN if [ -f pnpm-lock.yaml ]; then \
pnpm install --frozen-lockfile; \
else \
echo "No pnpm-lock.yaml found; running pnpm install (generates one)"; \
pnpm install; \
fi
FROM base AS build
COPY --from=deps /app /app
COPY . .
# ---- build ----------------------------------------------------------------
FROM deps AS build
COPY apps/cms ./apps/cms
WORKDIR /repo/apps/cms
RUN pnpm run build
# ---- runtime --------------------------------------------------------------
FROM base AS runtime
ENV NODE_ENV=production
WORKDIR /app
COPY --from=build /app ./
WORKDIR /repo/apps/cms
COPY --from=build /repo ./
EXPOSE 3000
CMD ["pnpm", "start"]