#!/bin/bash set -e # Check if the '--dev' argument is provided if [ "$1" == "--dev" ]; then echo "Run development docker" DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f docker-compose.yml up -d --build else echo "Run Production docker" # در صورت بروز هرگونه خطا، وضعیت FAIL ثبت شود trap 'echo "FAIL" > /tmp/dovodi_backend_deploy_status.txt' ERR # ۱. بستن تمام رانرهای قبلی همین پروژه به جز پروسه جاری CURRENT_PID=$$ for pid in $(pgrep -f "dovodi-backend/runner.sh" 2>/dev/null || true); do if [ "$pid" != "$CURRENT_PID" ]; then kill -9 "$pid" 2>/dev/null || true fi done # ۲. بستن پروسه‌های فرزند داکر و بیلدکس معلق که ممکن است قفل داکر را نگه داشته باشند pkill -9 -f "docker-buildx.*dovodi-backend" 2>/dev/null || true pkill -9 -f "docker.*dovodi-backend" 2>/dev/null || true echo "🧹 [1/4] Pre-build cleanup: freeing up disk space safely..." # ۱. پاکسازی کامل تمام کش‌های بیلد داکر بدون دست زدن به کانتینرهای فعال docker builder prune -a -f 2>/dev/null || true # ۲. پاکسازی ایمیج‌های قدیمی و معلق (Dangling) docker image prune -f 2>/dev/null || true # ۳. پاکسازی کش پکیج‌های سیستم‌عامل apt-get clean 2>/dev/null || true echo "📥 [2/4] Pulling latest backend changes from master..." git checkout master git fetch origin git reset --hard origin/master echo "🚀 [3/4] Building and deploying backend container..." DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f docker-compose.prod.yml up -d --build echo "✨ [4/4] Post-build cleanup..." # پاکسازی ایمیج قدیمی که بعد از بیلد جدید معلق شده است docker image prune -f 2>/dev/null || true echo "SUCCESS" > /tmp/dovodi_backend_deploy_status.txt echo "🎉 Dovodi Backend build and deployment finished successfully!" fi