| COPIED from https://github.com/vishnubob/wait-for-it at |
| commit 81b1373f17855a4dc21156cfe1694c31d7d1792e. |
| |
| # wait-for-it |
| |
| `wait-for-it.sh` is a pure bash script that will wait on the availability of a |
| host and TCP port. It is useful for synchronizing the spin-up of |
| interdependent services, such as linked docker containers. Since it is a pure |
| bash script, it does not have any external dependencies. |
| |
| ## Usage |
| |
| ```text |
| wait-for-it.sh host:port [-s] [-t timeout] [-- command args] |
| -h HOST | --host=HOST Host or IP under test |
| -p PORT | --port=PORT TCP port under test |
| Alternatively, you specify the host and port as host:port |
| -s | --strict Only execute subcommand if the test succeeds |
| -q | --quiet Don't output any status messages |
| -t TIMEOUT | --timeout=TIMEOUT |
| Timeout in seconds, zero for no timeout |
| -- COMMAND ARGS Execute command with args after the test finishes |
| ``` |
| |
| ## Examples |
| |
| For example, let's test to see if we can access port 80 on `www.google.com`, |
| and if it is available, echo the message `google is up`. |
| |
| ```text |
| $ ./wait-for-it.sh www.google.com:80 -- echo "google is up" |
| wait-for-it.sh: waiting 15 seconds for www.google.com:80 |
| wait-for-it.sh: www.google.com:80 is available after 0 seconds |
| google is up |
| ``` |
| |
| You can set your own timeout with the `-t` or `--timeout=` option. Setting |
| the timeout value to 0 will disable the timeout: |
| |
| ```text |
| $ ./wait-for-it.sh -t 0 www.google.com:80 -- echo "google is up" |
| wait-for-it.sh: waiting for www.google.com:80 without a timeout |
| wait-for-it.sh: www.google.com:80 is available after 0 seconds |
| google is up |
| ``` |
| |
| The subcommand will be executed regardless if the service is up or not. If you |
| wish to execute the subcommand only if the service is up, add the `--strict` |
| argument. In this example, we will test port 81 on `www.google.com` which will |
| fail: |
| |
| ```text |
| $ ./wait-for-it.sh www.google.com:81 --timeout=1 --strict -- echo "google is up" |
| wait-for-it.sh: waiting 1 seconds for www.google.com:81 |
| wait-for-it.sh: timeout occurred after waiting 1 seconds for www.google.com:81 |
| wait-for-it.sh: strict mode, refusing to execute subprocess |
| ``` |
| |
| If you don't want to execute a subcommand, leave off the `--` argument. This |
| way, you can test the exit condition of `wait-for-it.sh` in your own scripts, |
| and determine how to proceed: |
| |
| ```text |
| $ ./wait-for-it.sh www.google.com:80 |
| wait-for-it.sh: waiting 15 seconds for www.google.com:80 |
| wait-for-it.sh: www.google.com:80 is available after 0 seconds |
| $ echo $? |
| 0 |
| $ ./wait-for-it.sh www.google.com:81 |
| wait-for-it.sh: waiting 15 seconds for www.google.com:81 |
| wait-for-it.sh: timeout occurred after waiting 15 seconds for www.google.com:81 |
| $ echo $? |
| 124 |
| ``` |
| |
| ## Community |
| |
| *Debian*: There is a [Debian package](https://tracker.debian.org/pkg/wait-for-it). |