0

I'm using docker swarm here and used docker service create, it is stuck due to some mount error or any service pre-requisite which is not being met. But instead of forever getting stuck. I want it to exit when such a failure scenario has come across.

How to do it ? I don't see anything present in inbuilt in docker for now. Tried using a script too.

docker service creation...
service_pid=$!
timeout_seconds=600
while true; do
    if docker service ls --filter name="$service_name" --format '{{.Name}}' | grep -q "$service_name"; then
        echo "Service $service_name created successfully."
        break
    elif [ $SECONDS -ge $timeout_seconds ]; then
        echo "Service creation timed out after $timeout_seconds seconds."
        # Optionally, you can clean up the service here if desired
        docker service rm "$service_name" >/dev/null 2>&1
        break
    fi
    sleep 5
done

But the problem here it's not leaving docker service creation command so it does not even go next line of it.

axel
  • 21
  • 7

1 Answers1

1

docker service create typically waits for the service tasks to deploy and become healthy before returning.

The detach flag (docker service create --detach ...) can be used to return immediately, so service creating can be tracked from your script.

Chris Becke
  • 34,244
  • 12
  • 79
  • 148
  • --Detach looks like nice way but how can i monitor it, do we get any specific process id? which i can process and ask it to leave after a certain period. – axel Aug 30 '23 at 13:29