diff --git a/web/cashtab/Dockerfile b/web/cashtab/Dockerfile index c4d9d99e8..c164052cf 100644 --- a/web/cashtab/Dockerfile +++ b/web/cashtab/Dockerfile @@ -1,29 +1,34 @@ # Multi-stage # 1) Node image for building frontend assets # 2) nginx stage to serve frontend assets # Stage 1 FROM node:15-buster-slim AS builder # Install some dependencies before building RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y git && \ apt-get install -y python WORKDIR /app -# Copy all files from current directory to working dir in image +# Copy only the package files and install necessary dependencies. +# This reduces cache busting when source files are changed. +COPY package.json . +COPY package-lock.json . +RUN npm install + +# Copy the rest of the project files and build COPY . . -# install node modules and build assets -RUN npm install && npm run build +RUN npm run build # Stage 2 FROM nginx COPY nginx.conf /etc/nginx/conf.d/default.conf # Set working directory to nginx asset directory # Copy static assets from builder stage COPY --from=builder /app/build /usr/share/nginx/html/ EXPOSE 80 # Containers run nginx with global directives and daemon off ENTRYPOINT ["nginx", "-g", "daemon off;"]