An HTTP endpoint to check if a docker container is ready
Failed to load latest commit information.
.gitignore Initial commit Jan 17, 2017
.travis.yml Fix Travis incorrect tag assignment Jan 19, 2017
LICENSE Initial commit Jan 16, 2017 Fix a typo the CLI arguments Feb 10, 2017
ruready.go Safer mutex usage Jan 17, 2017


ruready is an application that exposes an HTTP endpoint to allow you to check if a machine is ready. It can be used in conjunction with docker-compose to make one container wait for another one to be ready. The ready state is determined by a command passed as argument.

Build Status


  • The latest compiled version is available on the releases page
  • To compile from sources, build the repository using go

Full working example

The client container waits for mysql on the db container to become available.

Create a file called docker-compose.yml with the content below:

version: '2'
    image: "mysql"
        - MYSQL_ROOT_PASSWORD=1q2w3e
     - "8099:8099"
    command: bash -c "apt-get update && apt-get -y install curl && curl -L > ruready && chmod +x ruready && (./ruready -c mysql -- --host=localhost --port=3306 --user=root --password=1q2w3e --execute=quit & ./ mysqld)"

    image: "busybox"
    command: sh -c "while [ true ]; do wget -q -O - http://db:8099/ready && break; echo 'Not ready...'; sleep 1s; done; echo 'Ready!';"

Run docker-compose up in the folder where you created the file.

Command line arguments

Argument Required Default Description
-c/--command Yes The command that checks if the machine is ready
-t/--cachetime No 3 Number of seconds to cache the result of the command before reinvoking
-p/--port No 8099 Server port
-v/--version No Shows version information
-- No Anything that follows -- is passed as argument to command


  • ruready -c ls -- ./opt/app/started.txt Waits for the file ./opt/app/started.txt to exist. Endpoint <hostname>:8099/ready

  • ruready -p 3000 -c ls -- ./opt/app/started.txt Waits for the file ./opt/app/started.txt to exist. Endpoint <hostname>:3000/ready


  • If the machine is ready, /ready endpoint returns 200 (OK) and the message ruready: Ready
  • If the machine is not ready, /ready endpoint returns 503 (Service Unavailable) and the message ruready: Not Ready

Checking if the machine is available

  • curl: while [ true ]; do curl -I http://<host>:8099/ready && break; echo 'Not ready...'; sleep 1s; done;
  • wget: while [ true ]; do wget -q -O - http://<host>:8099/ready && break; echo 'Not ready...'; sleep 1s; done;