I'm trying to do a custom dockerfile with jenkins on it. I would to wait until port 8080 is open instead of doing an ugly 'sleep 60' with netcat but I'm not very confident with bash scripts and netcat.
Here is an example of what i'm trying to do:
#!/bin/bash opened=0 while [ "$opened" == "0" ]; do echo "Waiting jenkins to launch on 8080..." nc -vz localhost 8080 done echo "Jenkins launched"
Netcat is a command-line network tool used to open ports, associate a shell to a port, establish TCP/UDP connections, and more.
On one machine, you can tell netcat to listen to a specific port for connections. We can do this by providing the -l parameter and choosing a port: netcat -l 4444.
Check Open Ports with netcatThe -z option tells nc to scan only for open ports, without sending any data and the -v is for more verbose information. If you want only the lines with the open ports to be printed on the screen, filter the results with the grep command .
You can't set netcat to wait until some port is open, so you have to add part for waiting before next check is made. Try this:
#!/bin/bash echo "Waiting jenkins to launch on 8080..." while ! nc -z localhost 8080; do sleep 0.1 # wait for 1/10 of the second before check again done echo "Jenkins launched"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With