diff --git a/scripts/deploy.sh b/scripts/deploy.sh index ed0180d..d72e33c 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -15,7 +15,20 @@ git fetch --all --prune git reset --hard origin/main echo "==> Building + starting the stack…" -docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d --build --remove-orphans +deploy_up() { + docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d --build --remove-orphans +} + +# A raced or interrupted previous deploy (e.g. a manual `compose up` overlapping +# the automated one) can leave a half-removed / renamed container behind, making +# the next recreate fail with "removal of container ... is already in progress". +# If the first attempt fails, prune stopped containers and retry once. +if ! deploy_up; then + echo "!! 'compose up' failed — pruning stopped containers, retrying once in 8s…" + docker container prune -f >/dev/null 2>&1 || true + sleep 8 + deploy_up +fi echo "==> Pruning dangling images…" docker image prune -f >/dev/null 2>&1 || true