Files
Flowise/docker/Dockerfile
T
2026-07-31 14:02:10 +05:30

41 lines
1.4 KiB
Docker

# Node.js version (overridable via build-arg from CI)
ARG NODE_VERSION=24
# Stage 1: Build stage
FROM node:${NODE_VERSION}-alpine AS build
USER root
# Install build dependencies
RUN apk add --no-cache git python3 py3-pip make g++ build-base cairo-dev pango-dev
# Skip downloading Chrome for Puppeteer (saves build time)
ENV PUPPETEER_SKIP_DOWNLOAD=true
# Install latest Flowise globally (specific version can be set: [email protected])
# npm dedupe is required after install: npm's overrides resolver does not
# consistently collapse every duplicate of an overridden package in one pass
# on a tree this size/complexity
RUN npm install -g flowise && npm --prefix "$(npm root -g)/flowise" dedupe
# Stage 2: Runtime stage
FROM node:${NODE_VERSION}-alpine
# Install runtime dependencies
RUN apk add --no-cache chromium git python3 py3-pip make g++ build-base cairo-dev pango-dev curl
# 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
# Give the node user ownership of the installed package (node:*-alpine already has this user)
RUN chown -R node:node /usr/local/lib/node_modules /usr/local/bin
# Switch to non-root user
USER node
ENTRYPOINT ["flowise", "start"]