FlowiseHosted / Dockerfile
hfariborzi's picture
Update Dockerfile
bdc90f2 verified
# Use Node 20 for better Web API support
FROM node:20-alpine
USER root
ARG FLOWISE_PATH=/usr/local/lib/node_modules/flowise
ARG BASE_PATH=/data/flowise # <--- USE /data instead of /root/.flowise
ARG LOG_PATH=$BASE_PATH/logs
ARG UPLOADS_PATH=$BASE_PATH/uploads
ARG STORAGE_PATH=$BASE_PATH/storage
# Install dependencies
RUN apk add --no-cache git python3 py3-pip make g++ build-base cairo-dev pango-dev chromium
ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Install Flowise globally
RUN npm install -g flowise
# Prepare writable directories under /data
RUN mkdir -p $LOG_PATH $UPLOADS_PATH $STORAGE_PATH \
&& chmod -R 777 $BASE_PATH
WORKDIR /app
# Install formdata-node locally
RUN npm init -y && npm install formdata-node
# Add polyfill for global.File
RUN echo "import { File } from 'formdata-node'; if (!global.File) { global.File = File; console.log('Polyfilled global.File'); }" > polyfill.mjs
# Hugging Face sets PORT dynamically
ENV PORT=${PORT:-7860}
ENV DATABASE_PATH=$BASE_PATH/flowise.db
ENV LOG_PATH=$LOG_PATH
ENV BLOB_STORAGE_PATH=$STORAGE_PATH
EXPOSE $PORT
# Start Flowise and make it use our /data paths
CMD ["sh", "-c", "node --require /app/polyfill.mjs /usr/local/lib/node_modules/flowise/dist/index.js --PORT=$PORT --DATABASE_PATH=$DATABASE_PATH --LOG_PATH=$LOG_PATH --BLOB_STORAGE_PATH=$BLOB_STORAGE_PATH --UPLOADS_PATH=$UPLOADS_PATH"]