You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.0 KiB
50 lines
2.0 KiB
#!/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
|