# ---------- 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 # ---------- Node & Python deps -------------------------------------------- RUN npm install -g flowise@3.0.0 # Chroma server 1.x (compatible with Flowise v2 API) RUN pip3 install numpy==1.26.4 --break-system-packages \ && pip3 install chromadb==1.0.9 --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 ENV PATH=$PATH:/home/node/.local/bin:/usr/local/bin:/root/.local/bin USER 1000:1000 # ---------- Expose ports --------------------------------------------------- EXPOSE 7860 8000 # ---------- Start: Chroma ➜ wait ➜ Flowise --------------------------------- CMD sh -c 'set -x; \ chroma run \ --path /data/chroma \ --host 0.0.0.0 \ --port 8000 \ & \ echo "--- Waiting for Chroma API ---"; \ while ! curl -v http://localhost:8000/api/v2/heartbeat; do \ echo "[DEBUG] Chroma not ready yet. Retrying..."; \ netstat -tulnp || ss -tulnp || true; \ sleep 1; \ done; \ echo "--- Chroma API is up ---"; \ echo "[DEBUG] Testing Chroma collections endpoint:"; \ curl -v http://localhost:8000/api/v2/collections || true; \ echo "[DEBUG] Environment variables:"; \ printenv | grep CHROMA || true; \ echo "[DEBUG] Process list:"; \ ps aux; \ echo "[DEBUG] Flowise will start now."; \ npx flowise start'