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 . .