Add curl in docker image for native healthchecks (#4170)

* Add curl in docker image for native healthchecks

Fixes this issue: https://github.com/FlowiseAI/Flowise/issues/4126

* fix: add container-native healthcheck

- Added curl utility in dockerfile
- Added healthcheck configuration in docker compose

* fix: exclude ping endpoint from logging
This commit is contained in:
Saqib Ahmed 2025-03-14 20:24:17 +05:00 committed by GitHub
parent 145a3bb415
commit 7867489727
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 2 deletions

View File

@ -12,6 +12,10 @@ RUN apk add --no-cache build-base cairo-dev pango-dev
# Install Chromium
RUN apk add --no-cache chromium
# Install curl for container-level health checks
# Fixes: https://github.com/FlowiseAI/Flowise/issues/4126
RUN apk add --no-cache curl
#install PNPM globaly
RUN npm install -g pnpm

View File

@ -13,7 +13,7 @@ RUN npm install -g flowise
FROM node:20-alpine
# Install runtime dependencies
RUN apk add --no-cache chromium git python3 py3-pip make g++ build-base cairo-dev pango-dev
RUN apk add --no-cache chromium git python3 py3-pip make g++ build-base cairo-dev pango-dev curl
# Set the environment variable for Puppeteer to find Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

View File

@ -49,6 +49,12 @@ services:
- REDIS_CA=${REDIS_CA}
ports:
- '${PORT}:${PORT}'
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:${PORT}/api/v1/ping"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
volumes:
- ~/.flowise:/root/.flowise
entrypoint: /bin/sh -c "sleep 3; flowise start"

View File

@ -138,7 +138,7 @@ const logger = createLogger({
})
export function expressRequestLogger(req: Request, res: Response, next: NextFunction): void {
const unwantedLogURLs = ['/api/v1/node-icon/', '/api/v1/components-credentials-icon/']
const unwantedLogURLs = ['/api/v1/node-icon/', '/api/v1/components-credentials-icon/', '/api/v1/ping']
if (/\/api\/v1\//i.test(req.url) && !unwantedLogURLs.some((url) => new RegExp(url, 'i').test(req.url))) {
const fileLogger = createLogger({
format: combine(timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), format.json(), errors({ stack: true })),