From 775ca5787b2ec98e4d53063be682565a821ece53 Mon Sep 17 00:00:00 2001 From: Weves Date: Mon, 20 May 2024 15:02:02 -0700 Subject: [PATCH] Move web build to a matrix build --- web/Dockerfile | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/web/Dockerfile b/web/Dockerfile index 341b41613..5ffbd0ad7 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -12,27 +12,18 @@ ARG DANSWER_VERSION=0.3-dev ENV DANSWER_VERSION=${DANSWER_VERSION} RUN echo "DANSWER_VERSION: ${DANSWER_VERSION}" -# Step 1. Install dependencies only when needed -FROM base AS deps +# Step 1. Install dependencies + rebuild the source code only when needed +FROM base AS builder # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat WORKDIR /app -# Install dependencies based on the preferred package manager -COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ -RUN \ - if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ - elif [ -f package-lock.json ]; then npm ci; \ - elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \ - else echo "Lockfile not found." && exit 1; \ - fi - -# Step 2. Rebuild the source code only when needed -FROM base AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +# pull in source code / package.json / package-lock.json COPY . . +# Install dependencies +RUN npm ci + # needed to get the `standalone` dir we expect later ENV NEXT_PRIVATE_STANDALONE true @@ -54,6 +45,7 @@ ENV NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PRED ARG NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS ENV NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS} + ARG NEXT_PUBLIC_THEME ENV NEXT_PUBLIC_THEME=${NEXT_PUBLIC_THEME} @@ -63,9 +55,9 @@ ENV NEXT_PUBLIC_ENABLE_PAID_EE_FEATURES=${NEXT_PUBLIC_ENABLE_PAID_EE_FEATURES} ARG NEXT_PUBLIC_DISABLE_LOGOUT ENV NEXT_PUBLIC_DISABLE_LOGOUT=${NEXT_PUBLIC_DISABLE_LOGOUT} -RUN npm run build +RUN npx next build -# Step 3. Production image, copy all the files and run next +# Step 2. Production image, copy all the files and run next FROM base AS runner WORKDIR /app @@ -107,6 +99,7 @@ ENV NEXT_PUBLIC_POSITIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_POSITIVE_PRED ARG NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS ENV NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS=${NEXT_PUBLIC_NEGATIVE_PREDEFINED_FEEDBACK_OPTIONS} + ARG NEXT_PUBLIC_THEME ENV NEXT_PUBLIC_THEME=${NEXT_PUBLIC_THEME}