Improvement - Reduce size of final docker image with multistage build (#2598)

* Reduce size of final docker image with multistage build

* Dockerfile - Move PUPPETEER_SKIP_DOWNLOAD flag to build stage
This commit is contained in:
Daniel D'Abate 2024-06-07 16:35:57 +02:00 committed by GitHub
parent c8939dc2a6
commit be3a887e68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 16 additions and 12 deletions

View File

@ -1,21 +1,25 @@
FROM node:20-alpine # Stage 1: Build stage
FROM node:20-alpine as build
USER root USER root
RUN apk add --no-cache git # Skip downloading Chrome for Puppeteer (saves build time)
RUN apk add --no-cache python3 py3-pip make g++
# needed for pdfjs-dist
RUN apk add --no-cache build-base cairo-dev pango-dev
# Install Chromium
RUN apk add --no-cache chromium
ENV PUPPETEER_SKIP_DOWNLOAD=true ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# You can install a specific version like: flowise@1.0.0 # Install latest Flowise globally (specific version can be set: flowise@1.0.0)
RUN npm install -g flowise RUN npm install -g flowise
WORKDIR /data # Stage 2: Runtime stage
FROM node:20-alpine
# Install runtime dependencies
RUN apk add --no-cache chromium git python3 py3-pip make g++ build-base cairo-dev pango-dev
# Set the environment variable for Puppeteer to find Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Copy Flowise from the build stage
COPY --from=build /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=build /usr/local/bin /usr/local/bin
ENTRYPOINT ["flowise", "start"] ENTRYPOINT ["flowise", "start"]