chore: dockerfile update
This commit is contained in:
+28
-10
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user