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.
 
 
 
 
 

46 lines
1.9 KiB

#!/bin/bash
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"
# ۱. ثبت وضعیت اولیه در حال اجرا
echo "BUILDING" > /tmp/dovodi_backend_deploy_status.txt
# در صورت بروز هرگونه خطا، وضعیت FAIL ثبت شود
trap 'echo "FAIL" > /tmp/dovodi_backend_deploy_status.txt' ERR
set -e
# ۲. بستن تمام رانرهای قبلی همین پروژه به جز پروسه جاری
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 dangling images safely..."
# فقط پاکسازی ایمیج‌های معلق بدون دست زدن به لایه‌های کش بیلد (تا بیلدها در چند ثانیه تمام شوند)
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