From 93d9c47ad5e07fadf6d8201e9700b7c6fdae1579 Mon Sep 17 00:00:00 2001 From: paul Date: Thu, 24 Jul 2025 09:35:03 +0200 Subject: [PATCH] fix: Prevent nodemon restarts during policy creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move temp directory outside app folder to /tmp/minio-webui-temp - Add nodemon.json to ignore temp, logs, and node_modules - Add TEMP_DIR environment variable configuration - Add cleanup routine for old temporary policy files (>1 hour) - Update both dev and production Dockerfiles - Update docker-compose configurations This fixes the 500 error during QuickStartWizard policy creation caused by nodemon restarting when temporary files were created. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .env.example | 1 + backend/nodemon.json | 14 ++++++++++++++ backend/src/services/minio.service.js | 23 +++++++++++++++++++++++ docker-compose.dev.yml | 4 ++-- docker/Dockerfile.backend | 5 +++-- docker/Dockerfile.backend.dev | 4 ++-- 6 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 backend/nodemon.json diff --git a/.env.example b/.env.example index bdee521..90f662e 100644 --- a/.env.example +++ b/.env.example @@ -2,6 +2,7 @@ NODE_ENV=production PORT=7510 LOG_LEVEL=info +TEMP_DIR=/tmp/minio-webui-temp # Authentication ADMIN_PASSWORD_HASH=$2b$12$REPLACE_WITH_ACTUAL_HASH diff --git a/backend/nodemon.json b/backend/nodemon.json new file mode 100644 index 0000000..4a27b50 --- /dev/null +++ b/backend/nodemon.json @@ -0,0 +1,14 @@ +{ + "watch": ["src"], + "ext": "js,json", + "ignore": [ + "src/**/*.spec.js", + "node_modules", + "logs", + "temp", + "*.log", + "*.tmp", + "*.temp" + ], + "delay": "1000" +} \ No newline at end of file diff --git a/backend/src/services/minio.service.js b/backend/src/services/minio.service.js index 93d838f..e31c3fd 100644 --- a/backend/src/services/minio.service.js +++ b/backend/src/services/minio.service.js @@ -19,11 +19,34 @@ class MinIOService { async ensureTempDir() { try { await fs.mkdir(this.tempDir, { recursive: true }); + // Clean up old temp files (older than 1 hour) + this.cleanupTempFiles(); } catch (error) { logger.error('Failed to create temp directory:', error); } } + async cleanupTempFiles() { + try { + const files = await fs.readdir(this.tempDir); + const now = Date.now(); + const oneHour = 60 * 60 * 1000; + + for (const file of files) { + if (file.endsWith('.json')) { + const filePath = path.join(this.tempDir, file); + const stats = await fs.stat(filePath); + if (now - stats.mtimeMs > oneHour) { + await fs.unlink(filePath); + logger.debug(`Cleaned up old temp file: ${file}`); + } + } + } + } catch (error) { + logger.debug('Error cleaning temp files:', error); + } + } + // Execute MinIO CLI command with timeout and error handling async executeCommand(command, options = {}) { const { timeout = 30000, parseJson = false } = options; diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 0c89e91..332a713 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -13,7 +13,7 @@ services: NODE_ENV: development PORT: 7510 LOG_DIR: /app/logs - TEMP_DIR: /app/temp + TEMP_DIR: /tmp/minio-webui-temp LOG_LEVEL: debug env_file: - .env @@ -24,7 +24,7 @@ services: - ./backend/package.json:/app/package.json - ./backend/package-lock.json:/app/package-lock.json - backend-logs:/app/logs - - backend-temp:/app/temp + - backend-temp:/tmp/minio-webui-temp - mc-config:/home/node/.mc depends_on: - redis diff --git a/docker/Dockerfile.backend b/docker/Dockerfile.backend index f75ab0d..2d10547 100644 --- a/docker/Dockerfile.backend +++ b/docker/Dockerfile.backend @@ -30,9 +30,10 @@ RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # Create necessary directories with proper permissions -RUN mkdir -p logs temp && \ +RUN mkdir -p logs /tmp/minio-webui-temp && \ chown -R nodejs:nodejs /app && \ - chmod 755 logs temp + chown nodejs:nodejs /tmp/minio-webui-temp && \ + chmod 755 logs /tmp/minio-webui-temp # Switch to non-root user USER nodejs diff --git a/docker/Dockerfile.backend.dev b/docker/Dockerfile.backend.dev index c2e9b95..9ec2196 100644 --- a/docker/Dockerfile.backend.dev +++ b/docker/Dockerfile.backend.dev @@ -24,8 +24,8 @@ RUN NODE_ENV=development npm install && \ npm rebuild bcrypt --build-from-source # Create necessary directories -RUN mkdir -p logs temp && \ - chmod 755 logs temp +RUN mkdir -p logs /tmp/minio-webui-temp && \ + chmod 755 logs /tmp/minio-webui-temp # Copy application files COPY . .