diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index c9bbe79..e8c8b46 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,8 +1,7 @@ -version: '2.4' - services: app: container_name: trader_dev + restart: unless-stopped build: context: . dockerfile: Dockerfile @@ -52,8 +51,6 @@ services: - ./lib:/app/lib:cached - ./components:/app/components:cached - ./package.json:/app/package.json:ro - # Mount root JavaScript files for Enhanced Risk Manager - - ./start-enhanced-risk-manager.js:/app/start-enhanced-risk-manager.js:ro # Port mapping for development ports: @@ -69,46 +66,3 @@ services: timeout: 5s retries: 2 start_period: 15s - - # Enhanced Risk Manager as separate service - risk_manager: - container_name: enhanced_risk_manager - build: - context: . - dockerfile: Dockerfile - args: - - BUILDKIT_INLINE_CACHE=1 - - NODE_VERSION=20.11.1 - - PNPM_VERSION=8.15.1 - - # Override entrypoint and command to run Enhanced Risk Manager directly - entrypoint: [] - command: ["node", "start-enhanced-risk-manager.js"] - - # Enhanced Risk Manager environment - environment: - - NODE_ENV=development - - DOCKER_ENV=true - - DATABASE_URL=file:./prisma/dev.db - - TZ=Europe/Berlin - - # Load environment variables from .env file - env_file: - - .env - - # Enhanced Risk Manager volumes - volumes: - - ./lib:/app/lib:cached - - ./prisma:/app/prisma:cached - - ./start-enhanced-risk-manager.js:/app/start-enhanced-risk-manager.js:ro - - # Working directory - working_dir: /app - - # Depends on the main app being healthy - depends_on: - app: - condition: service_healthy - - # Restart policy - restart: unless-stopped \ No newline at end of file diff --git a/lib/automated-cleanup-service.ts b/lib/automated-cleanup-service.ts index d55dd8b..b911e74 100644 --- a/lib/automated-cleanup-service.ts +++ b/lib/automated-cleanup-service.ts @@ -53,19 +53,20 @@ export class AutomatedCleanupService { console.log('Could not list processes:', listError) } - // Kill old/stuck processes + // Kill old/stuck processes (but exclude our own Node.js process) + const currentPid = process.pid const killCommands = [ - // Graceful shutdown first - 'pkill -TERM -f "chromium.*--remote-debugging-port" 2>/dev/null || true', - 'pkill -TERM -f "chromium.*--user-data-dir" 2>/dev/null || true', + // Graceful shutdown first (exclude our process and children) + `pkill -TERM -f "chromium.*--remote-debugging-port" | grep -v ${currentPid} 2>/dev/null || true`, + `pkill -TERM -f "chromium.*--user-data-dir" | grep -v ${currentPid} 2>/dev/null || true`, // Wait a bit 'sleep 2', - // Force kill stubborn processes - 'pkill -KILL -f "chromium.*--remote-debugging-port" 2>/dev/null || true', - 'pkill -KILL -f "chromium.*--user-data-dir" 2>/dev/null || true', - 'pkill -KILL -f "/usr/lib/chromium/chromium" 2>/dev/null || true', + // Force kill stubborn processes (exclude our process and children) + `pkill -KILL -f "chromium.*--remote-debugging-port" | grep -v ${currentPid} 2>/dev/null || true`, + `pkill -KILL -f "chromium.*--user-data-dir" | grep -v ${currentPid} 2>/dev/null || true`, + `pkill -KILL -f "/usr/lib/chromium/chromium" | grep -v ${currentPid} 2>/dev/null || true`, // Clean up zombies 'pkill -9 -f "chromium.*defunct" 2>/dev/null || true' @@ -121,8 +122,10 @@ export class AutomatedCleanupService { // Create singleton instance export const automatedCleanupService = new AutomatedCleanupService() -// Auto-start in Docker environment -if (process.env.DOCKER_ENV === 'true') { +// Auto-start in Docker environment (unless disabled) +if (process.env.DOCKER_ENV === 'true' && process.env.DISABLE_AUTO_CLEANUP !== 'true') { console.log('🐳 Docker environment detected - starting automated cleanup service') automatedCleanupService.start(30000) // Every 30 seconds in Docker +} else if (process.env.DOCKER_ENV === 'true' && process.env.DISABLE_AUTO_CLEANUP === 'true') { + console.log('🐳 Docker environment detected but auto cleanup is disabled via DISABLE_AUTO_CLEANUP=true') } diff --git a/prisma/prisma/dev.db b/prisma/prisma/dev.db index 1c547f4..74467d5 100644 Binary files a/prisma/prisma/dev.db and b/prisma/prisma/dev.db differ