From 6df93c4c02162ee075ce523502030e39051a9df9 Mon Sep 17 00:00:00 2001 From: Jainil Prajapati <86187588+jaainil@users.noreply.github.com> Date: Sun, 14 Sep 2025 09:21:59 +0530 Subject: [PATCH] feat(flowise): add Flowise blueprint with Docker Compose and template configuration (#354) - Added Flowise metadata to meta.json with relevant details including ID, name, version, description, logo, links, and tags. - Created Docker Compose file for Flowise, defining services for Redis and Flowise, including health checks and environment variables. - Added image for Flowise logo. - Created template.toml for Flowise configuration, specifying variables, domains, environment variables, and mounts. --- blueprints/flowise/docker-compose.yml | 56 ++++++++++++++++++++++++++ blueprints/flowise/image.png | Bin 0 -> 13103 bytes blueprints/flowise/template.toml | 24 +++++++++++ meta.json | 18 +++++++++ 4 files changed, 98 insertions(+) create mode 100644 blueprints/flowise/docker-compose.yml create mode 100644 blueprints/flowise/image.png create mode 100644 blueprints/flowise/template.toml diff --git a/blueprints/flowise/docker-compose.yml b/blueprints/flowise/docker-compose.yml new file mode 100644 index 00000000..e5f35e3b --- /dev/null +++ b/blueprints/flowise/docker-compose.yml @@ -0,0 +1,56 @@ +version: "3.8" + +services: + redis: + image: redis:alpine + restart: always + volumes: + - redis_data:/data + + flowise: + image: flowiseai/flowise:latest + restart: always + expose: + - 3000 + volumes: + - flowise_data:/root/.flowise + environment: + PORT: 3000 + DATABASE_PATH: /root/.flowise + REDIS_URL: redis://redis:6379 + JWT_AUTH_TOKEN_SECRET: ${JWT_AUTH_TOKEN_SECRET} + JWT_REFRESH_TOKEN_SECRET: ${JWT_REFRESH_TOKEN_SECRET} + EXPRESS_SESSION_SECRET: ${EXPRESS_SESSION_SECRET} + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/api/v1/ping"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + entrypoint: /bin/sh -c "sleep 3; flowise start" + depends_on: + - redis + + flowise-worker: + image: flowiseai/flowise-worker:latest + restart: always + volumes: + - flowise_data:/root/.flowise + environment: + WORKER_PORT: 5566 + DATABASE_PATH: /root/.flowise + REDIS_URL: redis://redis:6379 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:5566/healthz"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + entrypoint: /bin/sh -c "node /app/healthcheck/healthcheck.js & sleep 5 && pnpm run start-worker" + depends_on: + - redis + - flowise + +volumes: + redis_data: + flowise_data: diff --git a/blueprints/flowise/image.png b/blueprints/flowise/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f26496b9b5f3996c8957d0934973d1aff6d852a2 GIT binary patch literal 13103 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