Wait for other services to become available
./wait-for is a script designed to synchronize services like docker containers. It is sh and alpine compatible. It was inspired by vishnubob/wait-for-it, but the core has been rewritten at Eficode by dsuni and mrako.
When using this tool, you only need to pick the
wait-for file as part of your project.
./wait-for host:port [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
To check if 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
To wait for kafka and cassandra container to become available:
version: '2' services: cassandra: image: cassandra:3.10 ports: - "9042:9042" kafka: image: spotify/kafka ports: - "2181:2181" - "9092:9092" environment: - ADVERTISED_HOST=kafka - ADVERTISED_PORT=9092 backend: build: backend command: sh -c './wait-for cassandra:9042 kafka:9092 -- npm start' depends_on: - cassandra - kafka
docker build -t wait-for . docker run -t wait-for