mirror of
https://github.com/kodxana/madiator-docker-runpod.git
synced 2024-12-04 23:40:13 +01:00
122 lines
3.4 KiB
Bash
122 lines
3.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Set a default TERM if it's not set
|
|
if [ -z "$TERM" ]; then
|
|
export TERM=xterm-256color
|
|
fi
|
|
|
|
# Exit immediately if a command exits with a non-zero status
|
|
set -e
|
|
|
|
# Function to print colorized feedback
|
|
print_feedback() {
|
|
GREEN='\033[0;32m'
|
|
NC='\033[0m' # No Color
|
|
echo -e "${GREEN}[ComfyUI Startup]:${NC} $1"
|
|
}
|
|
|
|
# Function to run rsync with progress bar and optimizations
|
|
rsync_with_progress() {
|
|
rsync -aHvx --info=progress2 --ignore-existing --update --stats "$@"
|
|
}
|
|
|
|
# Check for required commands
|
|
for cmd in rsync; do
|
|
if ! command -v $cmd &> /dev/null; then
|
|
echo "$cmd could not be found, please install it."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
LOG_FILE="/workspace/comfyui.log"
|
|
|
|
# Copy the notebook and install-flux.sh script to the /workspace directory
|
|
print_feedback "Copying notebook and install script to /workspace..."
|
|
cp /comfyui_extras.ipynb /workspace/
|
|
cp /install-flux.sh /workspace/
|
|
|
|
# Check if the NO_SYNC variable is set to true
|
|
if [ "${NO_SYNC}" == "true" ]; then
|
|
print_feedback "Skipping sync and startup as per environment variable setting."
|
|
exec bash -c 'sleep infinity'
|
|
fi
|
|
|
|
print_feedback "Starting ComfyUI setup..."
|
|
|
|
print_feedback "Syncing virtual environment..."
|
|
VIRTUAL_ENV="/workspace/runpod-venvs/better-comfyui"
|
|
SOURCE_VENV="/venv"
|
|
NUM_CORES=$(nproc)
|
|
|
|
if [ ! -d "$VIRTUAL_ENV" ]; then
|
|
clear
|
|
echo -e "\e[1;33m"
|
|
cat << "EOF"
|
|
_____________________________________
|
|
| |
|
|
| !!! ATTENTION - FIRST TIME SYNC !!!|
|
|
| |
|
|
| This process will take ~10 minutes |
|
|
|_____________________________________|
|
|
|
|
EOF
|
|
echo -e "\e[0m"
|
|
|
|
mkdir -p "$VIRTUAL_ENV"
|
|
|
|
# Start background process to show progress
|
|
(
|
|
while true; do
|
|
for s in / - \\ \|; do
|
|
printf "\r\033[1;31m[%s] \033[1;37mSYNC IN PROGRESS - PLEASE WAIT\033[0m" "$s"
|
|
sleep 0.5
|
|
done
|
|
done
|
|
) &
|
|
PROGRESS_PID=$!
|
|
|
|
# Perform the sync
|
|
rsync -aHx --info=progress2 --stats --exclude='*.pyc' --exclude='__pycache__' "$SOURCE_VENV/" "$VIRTUAL_ENV/"
|
|
|
|
# Stop the progress indicator
|
|
kill $PROGRESS_PID
|
|
wait $PROGRESS_PID 2>/dev/null
|
|
|
|
clear
|
|
echo -e "\e[1;32m"
|
|
cat << "EOF"
|
|
_____________________________________
|
|
| |
|
|
| SYNC COMPLETED SUCCESS |
|
|
|_____________________________________|
|
|
|
|
EOF
|
|
echo -e "\e[0m"
|
|
else
|
|
print_feedback "Subsequent sync: Updating venv without overwriting existing files..."
|
|
rsync -aHx --info=progress2 --stats --exclude='*.pyc' --exclude='__pycache__' --ignore-existing --update "$SOURCE_VENV/" "$VIRTUAL_ENV/"
|
|
fi
|
|
|
|
print_feedback "Activating virtual environment..."
|
|
source "$VIRTUAL_ENV/bin/activate"
|
|
|
|
export PYTHONUNBUFFERED=1
|
|
|
|
print_feedback "Syncing ComfyUI files..."
|
|
rsync_with_progress /ComfyUI/ /workspace/ComfyUI/
|
|
|
|
print_feedback "Creating symbolic links for model checkpoints..."
|
|
ln -sf /comfy-models/* /workspace/ComfyUI/models/checkpoints/
|
|
|
|
print_feedback "Changing to ComfyUI directory..."
|
|
cd /workspace/ComfyUI
|
|
|
|
print_feedback "Starting ComfyUI server..."
|
|
print_feedback "ComfyUI will be available at http://0.0.0.0:3000"
|
|
|
|
# Check if CUSTOM_ARGS is set and not empty
|
|
if [ -n "$CUSTOM_ARGS" ]; then
|
|
exec python main.py --listen --port 3000 --enable-cors-header $CUSTOM_ARGS 2>&1 | tee -a $LOG_FILE
|
|
else
|
|
exec python main.py --listen --port 3000 --enable-cors-header 2>&1 | tee -a $LOG_FILE
|
|
fi
|