cache node_modules if possible

This commit is contained in:
john 2025-05-18 18:14:08 +02:00
parent 5377fd711c
commit 596400e4de

View file

@ -1,4 +1,15 @@
# Stage 1: Build the Vite React app # Stage 1: Dependencies install (cached if lockfile unchanged)
FROM node:22-alpine AS deps
WORKDIR /app
# Only copy dependency-related files to leverage cache
COPY package.json yarn.lock ./
# Install dependencies
RUN yarn install --frozen-lockfile
# Stage 2: Build the app
FROM node:22-alpine AS builder FROM node:22-alpine AS builder
ARG VITE_API_URL ARG VITE_API_URL
@ -6,15 +17,25 @@ ENV VITE_API_URL=$VITE_API_URL
WORKDIR /app WORKDIR /app
# Install dependencies # Copy deps from previous stage to cache node_modules
COPY package.json /app COPY --from=deps /app/node_modules ./node_modules
COPY yarn.lock /app COPY --from=deps /app/package.json ./package.json
RUN yarn install COPY --from=deps /app/yarn.lock ./yarn.lock
COPY . . # Copy rest of app
COPY src/ ./src
COPY public/ ./public
COPY .env.production ./.env.production
COPY index.html ./index.html
COPY tsconfig.json ./tsconfig.json
COPY tsconfig.app.json ./tsconfig.app.json
COPY tsconfig.node.json ./tsconfig.node.json
COPY vite.config.ts ./vite.config.ts
# Build the Vite app
RUN yarn build RUN yarn build
# Stage 2: Serve with Caddy # Stage 3: Serve with Caddy
FROM caddy:alpine FROM caddy:alpine
# Copy built app to the web root # Copy built app to the web root