wait-for/README.md

49 lines
1.4 KiB
Markdown
Raw Normal View History

2017-05-02 19:15:49 +02:00
## Wait for another service to become available
2017-05-02 19:13:27 +02:00
`./wait-for` is a script designed to synchronize services like docker containers. It is [sh](https://en.wikipedia.org/wiki/Bourne_shell) and [alpine](https://alpinelinux.org/) compatible.
`./wait-for` has been inspired by [vishnubob/wait-for-it](https://github.com/vishnubob/wait-for-it), but the core has been rewritten at [Eficode](http://eficode.com/).
## Usage
```
./wait-for host:port [-t timeout] [-- command args]
-q | --quiet Do not 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
To check if [eficode.com](https://eficode.com) is available:
```
$ ./wait-for www.eficode.com:80 -- echo "Eficode site is up"
Connection to www.eficode.com port 80 [tcp/http] succeeded!
Eficode site is up
```
To wait for database container to become available:
```
version: '2'
services:
db:
image: postgres:9.4
backend:
build: backend
command: sh -c './wait-for db:5432 -- npm start'
depends_on:
- db
2017-05-03 10:52:29 +02:00
```
## Testing
Ironically testing is done using [bats](https://github.com/sstephenson/bats), which on the other hand is depending on [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)).
docker build -t wait-for .
docker run -t wait-for