In the Docker image, the app source is copied to /app/app/ (not backend/app/), so parents[2] resolved to '/' instead of /app. This left the fail2ban package absent from sys.path, causing every pickle.loads() call on socket responses to raise: ModuleNotFoundError: No module named 'fail2ban' Replace the hardcoded parents[2] with a walk-up search that iterates over all ancestors until it finds a fail2ban-master/ sibling directory. Works correctly in both local dev and Docker without environment-specific path magic.
12 KiB
12 KiB