58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
VERSION=${1:-staging}
|
|
IMAGE="10.10.1.132:3000/marwan/hh:${VERSION}"
|
|
|
|
echo "========================================"
|
|
echo " PX360 Staging Deploy"
|
|
echo " Image: $IMAGE"
|
|
echo " $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "========================================"
|
|
|
|
echo ""
|
|
echo "[1/6] Pulling new image..."
|
|
docker pull "$IMAGE" || {
|
|
echo "ERROR: Failed to pull image $IMAGE"
|
|
exit 1
|
|
}
|
|
|
|
echo ""
|
|
echo "[2/6] Running pre-flight checks..."
|
|
docker run --rm --env-file .env.staging "$IMAGE" python manage.py check --deploy || {
|
|
echo "ERROR: Pre-flight checks failed. Aborting."
|
|
exit 1
|
|
}
|
|
|
|
echo ""
|
|
echo "[3/6] Running migrations..."
|
|
docker run --rm --env-file .env.staging --network px360_net "$IMAGE" python manage.py migrate --noinput || {
|
|
echo "ERROR: Migrations failed. Aborting deploy."
|
|
exit 1
|
|
}
|
|
|
|
echo ""
|
|
echo "[4/6] Collecting static files..."
|
|
export PX360_IMAGE="$IMAGE"
|
|
docker compose -f docker-compose.staging.yml run --rm --no-deps web python manage.py collectstatic --noinput
|
|
|
|
echo ""
|
|
echo "[5/6] Restarting all services with new image..."
|
|
docker compose -f docker-compose.staging.yml up -d --remove-orphans --force-recreate
|
|
|
|
echo ""
|
|
echo "[6/6] Cleaning up old images..."
|
|
docker image prune -f
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " Staging deploy complete!"
|
|
echo " Version: $VERSION"
|
|
echo "========================================"
|
|
echo ""
|
|
docker compose -f docker-compose.staging.yml ps
|
|
echo ""
|
|
echo "Logs: docker compose -f docker-compose.staging.yml logs -f"
|
|
echo "Stop: docker compose -f docker-compose.staging.yml down"
|
|
echo "Rollback: ./deploy.staging.sh <previous-version>"
|