Files
softvowels-webpage/apps/cms/Dockerfile
T
2026-06-17 22:56:47 +05:30

40 lines
1.3 KiB
Docker

# syntax=docker/dockerfile:1.7
#
# PayloadCMS production image. Built and run by docker-compose.
# We install pnpm globally via npm so we don't depend on corepack's
# (sometimes strict) version negotiation.
FROM node:20-alpine AS base
RUN npm install -g pnpm@latest
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 pnpm-workspace.yaml package.json ./
COPY apps/cms/package.json ./apps/cms/package.json
COPY apps/web/package.json ./apps/web/package.json
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
# ---- 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 /repo/apps/cms
COPY --from=build /repo ./
EXPOSE 3000
CMD ["pnpm", "start"]