Files
CyberPanel/deploy-docker-containers-fix.sh

53 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Deploy Docker containers fix to live panel (/usr/local/CyberCP).
# Run this script ON the server (e.g. 84.247.184.182) as root or with sudo.
# Fix: HTTP 500 on /docker/containers - error handling + auto-migrate.
set -e
CYBERCP_ROOT="${CYBERCP_ROOT:-/usr/local/CyberCP}"
REPO_URL="${REPO_URL:-https://github.com/master3395/cyberpanel.git}"
BRANCH="${BRANCH:-v2.5.5-dev}"
WORK_DIR="/tmp/cyberpanel-deploy-docker-$$"
echo "[$(date -Iseconds)] Deploying Docker containers fix to ${CYBERCP_ROOT}"
# Clone repo (shallow, branch only)
mkdir -p "$WORK_DIR"
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR"
# Backup and copy fixed files
for f in dockerManager/container.py dockerManager/views.py; do
src="$WORK_DIR/$f"
dest="$CYBERCP_ROOT/$f"
if [ ! -f "$src" ]; then
echo "ERROR: $src not found in repo"
exit 1
fi
if [ -f "$dest" ]; then
cp -a "$dest" "${dest}.bak.$(date +%Y%m%d%H%M%S)"
fi
cp -a "$src" "$dest"
echo " -> $dest"
done
# Run migrations for dockerManager (creates table if missing)
if [ -x "$CYBERCP_ROOT/bin/python" ] && [ -f "$CYBERCP_ROOT/manage.py" ]; then
echo "Running: manage.py migrate dockerManager --noinput"
"$CYBERCP_ROOT/bin/python" "$CYBERCP_ROOT/manage.py" migrate dockerManager --noinput || true
fi
# Restart panel service so Django loads new code
if systemctl is-active --quiet lscpd 2>/dev/null; then
echo "Restarting lscpd..."
systemctl restart lscpd
elif systemctl is-active --quiet gunicorn 2>/dev/null; then
echo "Restarting gunicorn..."
systemctl restart gunicorn
else
echo "Restart lscpd or gunicorn manually so the new code is loaded."
fi
# Cleanup
rm -rf "$WORK_DIR"
echo "[$(date -Iseconds)] Done. Test: https://YOUR_IP:2087/docker/containers"