#!/bin/bash set -e echo "Starting ClamAV services..." # Try to download database if missing if [ ! "$(ls -A /var/lib/clamav 2>/dev/null)" ]; then echo "Downloading ClamAV database (this may take a while)..." # Simple freshclam run without complex config if sg clamav -c "freshclam --datadir=/var/lib/clamav --quiet"; then echo "✓ Database downloaded successfully" else echo "⚠ Database download failed - creating minimal setup" # Create a dummy file so clamd doesn't immediately fail sg clamav -c "touch /var/lib/clamav/.dummy" fi fi # Start freshclam daemon for automatic updates echo "Starting freshclam daemon for automatic updates..." sg clamav -c "freshclam -d" & # /etc/init.d/clamav-freshclam start & # Start clamd in background # Start clamd in foreground (so dumb-init can supervise it) # /etc/init.d/clamav-daemon start & # Start clamd daemon in background using sg echo "Starting ClamAV daemon..." # sg clamav -c "clamd" & # Use sg to run clamd with proper group permissions # sg clamav -c "clamd" & sg clamav -c "clamd --config-file=/etc/clamav/clamd.conf" & # Give services time to start echo "Waiting for services to initialize..." sleep 8 # simple check if pgrep clamd > /dev/null; then echo "✓ ClamAV daemon is running" else echo "⚠ ClamAV daemon status uncertain, but continuing..." fi # Check if freshclam daemon is running if pgrep freshclam > /dev/null; then echo "✓ Freshclam daemon is running" else echo "⚠ Freshclam daemon status uncertain, but continuing..." fi # # change back to CMD of dockerfile # exec "$@" echo "✓ ClamAV setup complete" echo "Starting main application..." exec dumb-init -- "$@"