From bdc8b67cc5bb6c2dd558234c838a7505378e7a6b Mon Sep 17 00:00:00 2001 From: furyhawk Date: Sun, 19 Jul 2026 21:28:41 +0800 Subject: [PATCH] fix: improve waiting logic for CrowdSec service registration --- scripts/register-crowdsec-bouncer.sh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/scripts/register-crowdsec-bouncer.sh b/scripts/register-crowdsec-bouncer.sh index 150c319..19f7bca 100755 --- a/scripts/register-crowdsec-bouncer.sh +++ b/scripts/register-crowdsec-bouncer.sh @@ -4,6 +4,8 @@ set -euo pipefail BOUNCER_NAME="${CROWDSEC_BOUNCER_NAME:-traefik-bouncer}" BOUNCER_KEY="${CROWDSEC_BOUNCER_KEY:-}" SERVICE_NAME="crowdsec_crowdsec" +WAIT_TIMEOUT_SECONDS="${CROWDSEC_REGISTER_WAIT_TIMEOUT:-180}" +WAIT_INTERVAL_SECONDS="${CROWDSEC_REGISTER_WAIT_INTERVAL:-3}" if [[ -z "$BOUNCER_KEY" ]]; then echo "CROWDSEC_BOUNCER_KEY is not set. Export it or source swarm/.env first." @@ -15,11 +17,27 @@ if ! command -v docker >/dev/null 2>&1; then exit 1 fi -container_id="$(docker ps --filter "label=com.docker.swarm.service.name=${SERVICE_NAME}" --format '{{.ID}}' | head -n1)" +if ! docker service inspect "$SERVICE_NAME" >/dev/null 2>&1; then + echo "CrowdSec service '${SERVICE_NAME}' does not exist yet." + echo "Deploy CrowdSec first: make deploy-crowdsec" + exit 1 +fi + +deadline=$((SECONDS + WAIT_TIMEOUT_SECONDS)) +container_id="" + +while [[ -z "$container_id" && $SECONDS -lt $deadline ]]; do + container_id="$(docker ps --filter "label=com.docker.swarm.service.name=${SERVICE_NAME}" --format '{{.ID}}' | head -n1)" + if [[ -z "$container_id" ]]; then + remaining=$((deadline - SECONDS)) + echo "Waiting for running CrowdSec task (${remaining}s left)..." + sleep "$WAIT_INTERVAL_SECONDS" + fi +done if [[ -z "$container_id" ]]; then - echo "No running CrowdSec LAPI task found for service ${SERVICE_NAME}." - echo "Deploy CrowdSec first: make deploy-crowdsec" + echo "No running CrowdSec LAPI task found for service ${SERVICE_NAME} after ${WAIT_TIMEOUT_SECONDS}s." + echo "Check service status: docker service ps ${SERVICE_NAME} --no-trunc" exit 1 fi