49 lines
978 B
Docker
49 lines
978 B
Docker
# syntax=docker/dockerfile:1
|
|
|
|
FROM node:22-bookworm-slim AS base
|
|
|
|
ENV NEXT_TELEMETRY_DISABLED=1 \
|
|
PNPM_HOME=/pnpm \
|
|
PATH=/pnpm:$PATH
|
|
|
|
WORKDIR /app
|
|
|
|
RUN corepack enable && corepack prepare pnpm@10 --activate
|
|
|
|
FROM base AS deps
|
|
|
|
COPY package.json pnpm-lock.yaml .npmrc ./
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
FROM deps AS build
|
|
|
|
ARG NEXT_PUBLIC_SERVER_URL=http://localhost:3000
|
|
ARG __NEXT_PRIVATE_ORIGIN=http://localhost:3000
|
|
|
|
ENV NODE_ENV=production \
|
|
NEXT_PUBLIC_SERVER_URL=$NEXT_PUBLIC_SERVER_URL \
|
|
__NEXT_PRIVATE_ORIGIN=$__NEXT_PRIVATE_ORIGIN \
|
|
DATABASE_URL=file:/app/shared/content.db \
|
|
PAYLOAD_SECRET=build-time-placeholder \
|
|
CRON_SECRET=build-time-placeholder \
|
|
PREVIEW_SECRET=build-time-placeholder
|
|
|
|
COPY . .
|
|
|
|
RUN pnpm build
|
|
RUN pnpm prune --prod
|
|
|
|
FROM base AS runner
|
|
|
|
ENV NODE_ENV=production \
|
|
HOSTNAME=0.0.0.0 \
|
|
PORT=3000
|
|
|
|
COPY --from=build /app /app
|
|
|
|
RUN mkdir -p /app/shared /app/public/media
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["pnpm", "start"]
|