#!/usr/bin/env bash # Free port 4100 by stopping Docker containers and killing local processes PORT=4100 # Stop Docker containers bound to the port for cid in $(docker ps -q --filter "publish=$PORT" 2>/dev/null); do name=$(docker inspect --format '{{.Name}}' "$cid" | sed 's|^/||') echo "Stopping Docker container: $name ($cid)" docker stop "$cid" done # Kill any local processes on the port if command -v fuser &>/dev/null; then fuser -k "$PORT/tcp" 2>/dev/null && echo "Killed local process on port $PORT" fi # Verify sleep 1 if ss -tlnp sport = :"$PORT" 2>/dev/null | grep -q "$PORT"; then echo "WARNING: port $PORT still in use" ss -tlnp sport = :"$PORT" exit 1 else echo "Port $PORT is free" fi