FROM node:20-alpine USER root # Set environment variables ENV PORT=8080 ENV HOST=0.0.0.0 ENV BASE_PATH=/data/.flowise ENV DATABASE_PATH=/data/.flowise ENV APIKEY_PATH=/data/.flowise ENV SECRETKEY_PATH=/data/.flowise ENV LOG_PATH=/data/.flowise/logs ENV BLOB_STORAGE_PATH=/data/.flowise/storage ENV EXECUTION_PATH=/app/packages/server/dist # Install dependencies RUN apk add --no-cache git python3 py3-pip make g++ build-base cairo-dev pango-dev chromium curl # Set puppeteer environment variables ENV PUPPETEER_SKIP_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser # Set NODE_OPTIONS to increase memory limit ENV NODE_OPTIONS=--max-old-space-size=4096 # Set working directory WORKDIR /app # Copy all files COPY . . # Install pnpm RUN npm install -g pnpm # Install dependencies RUN pnpm install # Build project RUN pnpm build # Set server bin as executable RUN chmod +x /app/packages/server/bin/run # Create necessary directories RUN mkdir -p /data/.flowise/logs /data/.flowise/storage RUN chmod -R 777 /data/.flowise # Expose port for Hugging Face EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \ CMD curl -f http://localhost:8080/ || exit 1 # Start command - using the native server bin script CMD ["sh", "-c", "cd /app/packages/server/bin && ./run start"]