fp/d.next.dockerfile

46 lines
1.5 KiB
Plaintext
Raw Normal View History

2024-03-30 03:27:03 +00:00
## Important! Build context is the ROOT of the project.
## this keeps the door open for future possibility of shared code between pnpm workspace packages
2024-03-28 11:48:46 +00:00
FROM node:20-slim AS base
FROM base AS deps
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
FROM deps AS install
ARG NEXT_PUBLIC_SITE_URL=https://futureporn.net
ARG NEXT_PUBLIC_STRAPI_URL=https://portal.futureporn.net
ARG NEXT_PUBLIC_UPPY_COMPANION_URL=https://uppy.futureporn.net
ENV NEXT_PUBLIC_SITE_URL ${NEXT_PUBLIC_SITE_URL}
ENV NEXT_PUBLIC_STRAPI_URL ${NEXT_PUBLIC_STRAPI_URL}
ENV NEXT_PUBLIC_UPPY_COMPANION_URL ${NEXT_PUBLIC_UPPY_COMPANION_URL}
ENV NEXT_TELEMETRY_DISABLED 1
2024-07-04 21:20:29 +00:00
ENV NODE_EXTRA_CA_CERTS "/app/letsencrypt-stg-root-x1.pem"
2024-03-30 05:01:24 +00:00
COPY pnpm-lock.yaml ./
2024-03-30 03:27:03 +00:00
RUN pnpm fetch
COPY ./packages/next /app
2024-03-30 05:27:56 +00:00
RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store pnpm install
2024-03-28 11:48:46 +00:00
2024-03-30 03:27:03 +00:00
FROM install AS dev
2024-03-28 11:48:46 +00:00
CMD ["pnpm", "run", "dev"]
FROM install AS build
RUN pnpm run build
2024-03-30 03:27:03 +00:00
FROM deps AS next
2024-03-28 11:48:46 +00:00
RUN apt-get update && apt-get install -y -qq --no-install-recommends dumb-init
COPY --chown=node:node --from=build /app/package.json /app/pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
COPY --chown=node:node --from=build /app/public ./public
COPY --chown=node:node --from=build /app/.next/standalone ./
COPY --chown=node:node --from=build /app/.next/static ./.next/static
ENV TZ=UTC
ENV NODE_ENV=production
ENV HOSTNAME="0.0.0.0"
2024-03-30 03:27:03 +00:00
CMD [ "dumb-init", "node", "server.js" ]