docker-compose-wait
Some useful script to wait until all services declared in a docker-compose file are up and running.
This script uses the health check mechanism provided since Docker 1.12. If your services have a configured health check, after making a docker-compose up -d you can simply call this script to have it wait until all your services health statuses are fixed. If they are all healthy it will return 0 if any of them is unhealthy (or Down) it will return -1.
This script can be useful, as example, in Continuous Integration or other situations when you just want to wait until a stack is deployed before performing other actions.
Please note this script does not do anything about dependencies startup order. See the official documentation for that problem.
Installation
pip install docker-compose-wait
This utility requires Python 2.7 or Python >= 3.3. It also supports docker-compose from version 1.10.
Usage
usage: docker-compose-wait.py [options]
Wait until all services in a docker-compose file are healthy. Options are
forwarded to docker-compose.
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE Specify an alternate compose file (default: docker-
compose.yml)
-p PROJECT_NAME, --project-name PROJECT_NAME
Specify an alternate project name (default: directory
name)
-w, --wait Wait for all the processes to stabilize before exit
(default behavior is to exit as soon as any of the
processes is unhealthy)
-t TIMEOUT, --timeout TIMEOUT
Max amount of time during which this command will run
(expressed using the same format than in docker-
compose.yml files, example: 5s, 10m,... ). If there is
a timeout this command will exit returning 1.
(default: wait for an infinite amount of time)
-l, --log-print Whether to print docker healthcheck output for
unhealthy services
Basically it can be as simple as:
docker-compose-wait
docker-compose-wait behaves like a docker-compose sub-command. It will forward the usual docker-compose command-line arguments. The above command will work fine if you previously ran docker-compose up -d by referencing the standard docker-compose.yml file. If you are using other files for your docker-compose configuration just use:
docker-compose-wait -f <path_to_yaml_file> -f <path_to_other_yaml_file> ...
Running tests
python -m pip install -r requirements.txt # install dependencies
brew install bats-core # install test runner
bats tests.bats # run tests
License
Contribution
Release files for docker-compose-wait-cksource 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| docker-compose-wait-cksource-1.3.0.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| docker_compose_wait_cksource-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.0 kB
Release files / docker-compose-wait-cksource-1.3.0.tar.gz
| Download URL | docker-compose-wait-cksource-1.3.0.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6d7014972bd70afe9f0dfad0837b542466cdc3d3cc252b3cb911fdc183bee22
|
|
BLAKE2b-256 checksum How to use checksums |
7e7e599c425368526c7b06fa7b1ea1ac19c981a81f8770e9297175a8570c1b7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.5
|
Release files / docker_compose_wait_cksource-1.3.0-py3-none-any.whl
| Download URL | docker_compose_wait_cksource-1.3.0-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5fd44da9f863abdc4e5be358c1e0a7634c0ef4619420211f6839709d3341452
|
|
BLAKE2b-256 checksum How to use checksums |
a824f4f1b420b8d13d9c036c9dad159e67b6cf899559fdaf2769dfeb9b592691
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.5
|