services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-flowise} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_DB: ${POSTGRES_DB:-flowise} volumes: - postgres_data:/var/lib/postgresql/data ports: - "${POSTGRES_PORT_BIND:-127.0.0.1}:${POSTGRES_PORT:-5432}:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-flowise}"] interval: 5s timeout: 5s retries: 5 deploy: resources: limits: memory: 512M redis: image: redis:7-alpine restart: unless-stopped command: - redis-server - --appendonly - "yes" - --save - "60" - "1" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 deploy: resources: limits: memory: 512M flowise: build: . image: flowise-lite restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: - NODE_ENV=production - LITE_MODE=true - MODE=${MODE:-main} - DATABASE_TYPE=postgres - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_USER=${POSTGRES_USER:-flowise} - DATABASE_PASSWORD=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} - DATABASE_NAME=${POSTGRES_DB:-flowise} - DATABASE_PATH=/home/node/.flowise - SECRETKEY_PATH=/home/node/.flowise - LOG_PATH=/home/node/.flowise/logs - BLOB_STORAGE_PATH=/home/node/.flowise/storage - FLOWISE_DEFAULT_BODY_SIZE_LIMIT=${FLOWISE_DEFAULT_BODY_SIZE_LIMIT:-5mb} - FLOWISE_FILE_SIZE_LIMIT=${FLOWISE_FILE_SIZE_LIMIT:-50mb} - FLOWISE_OPEN_SOURCE_AUTH_ENABLED=${FLOWISE_OPEN_SOURCE_AUTH_ENABLED:-true} - SECURE_COOKIES=${SECURE_COOKIES:-false} - TRUST_PROXY=${TRUST_PROXY:-false} - CHATFLOW_CACHE_TTL_MS=${CHATFLOW_CACHE_TTL_MS:-5000} - CHATFLOW_CACHE_MAX_ENTRIES=${CHATFLOW_CACHE_MAX_ENTRIES:-1000} - CHAT_MESSAGE_DEFAULT_PAGE_SIZE=${CHAT_MESSAGE_DEFAULT_PAGE_SIZE:-100} - CHAT_MESSAGE_MAX_PAGE_SIZE=${CHAT_MESSAGE_MAX_PAGE_SIZE:-500} - WORKER_CONCURRENCY=${WORKER_CONCURRENCY:-5} - QUEUE_MAX_WAITING_JOBS=${QUEUE_MAX_WAITING_JOBS:-1000} - REMOVE_ON_AGE=${REMOVE_ON_AGE:-86400} - REMOVE_ON_COUNT=${REMOVE_ON_COUNT:-1000} - REDIS_URL=${REDIS_URL:-redis://redis:6379} - REDIS_KEEP_ALIVE=${REDIS_KEEP_ALIVE:-30000} - CACHE_POOL_REDIS_ENABLED=${CACHE_POOL_REDIS_ENABLED:-true} - CACHE_POOL_MAX_ENTRIES=${CACHE_POOL_MAX_ENTRIES:-500} - CACHE_POOL_TTL_SECONDS=${CACHE_POOL_TTL_SECONDS:-86400} - FLOWISE_MAX_INDEXING_DOCUMENTS=${FLOWISE_MAX_INDEXING_DOCUMENTS:-10000} - FLOWISE_MAX_INDEXING_CHARACTERS=${FLOWISE_MAX_INDEXING_CHARACTERS:-20000000} ports: - "${FLOWISE_PORT:-3000}:3000" volumes: - flowise_data:/home/node/.flowise healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/v1/readyz"] interval: 30s timeout: 10s retries: 3 start_period: 60s deploy: resources: limits: memory: 2G cpus: '2' reservations: memory: 512M volumes: postgres_data: redis_data: flowise_data: