# ---------- Base image ----------------------------------------------------- FROM node:18-slim # ---------- OS packages ---------------------------------------------------- RUN apt-get update && apt-get install -y \ git python3 python3-pip build-essential \ libcairo2-dev libpango1.0-dev chromium curl \ && apt-get clean && rm -rf /var/lib/apt/lists/* # ---------- Environment ---------------------------------------------------- ENV PUPPETEER_SKIP_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \ CHROMA_SERVER_CORS_ALLOW_ORIGINS='["*"]' \ PORT=7860 \ DATABASE_PATH=/data/.flowise \ LOG_PATH=/data/.flowise/logs \ TEMP_UPLOAD_DIR=/data/uploads \ CHROMA_URL=http://localhost:8000 \ FLOWISE_SECRETKEY_OVERWRITE=DxtmSQYcXBKrmpdcKDqEPKfuSwXQhnTa \ PASSPHRASE=my-super-secret-pass \ SECRETKEY_PATH=/data/.flowise \ APIKEY_PATH=/data/.flowise # ---------- Node & Python deps -------------------------------------------- RUN npm install -g flowise@3.0.7 RUN pip3 install numpy --break-system-packages \ && pip3 install chromadb --break-system-packages # provides `chroma` CLI v2 # ---------- Prevent Flowise early-log crash ------------------------------- RUN mkdir -p /usr/local/lib/node_modules/flowise/logs \ && chmod -R 777 /usr/local/lib/node_modules/flowise # ---------- Persistent data directories ----------------------------------- WORKDIR /data RUN mkdir -p /data/.flowise/logs /data/.flowise/storage /data/uploads /data/chroma \ && chmod -R 777 /data \ && chown -R 1000:1000 /data # ---------- Copy and set startup script ----------------------------------- COPY start.sh /start.sh RUN chmod +x /start.sh # ---------- Final env + permissions --------------------------------------- ENV PATH=$PATH:/home/node/.local/bin:/usr/local/bin:/root/.local/bin USER 1000:1000 # ---------- Expose ports --------------------------------------------------- EXPOSE 7860 8000 # ---------- Start everything ----------------------------------------------- ENTRYPOINT ["/start.sh"]