Docker healthchecks can be used for awaiting ready state

This commit is contained in:
Frederik Ring 2025-06-06 11:05:29 +02:00
parent 27b5b47ca2
commit 295387acd1
11 changed files with 32 additions and 38 deletions

0
test/collision/.swarm Normal file
View file

View file

@ -8,8 +8,6 @@ current_test=$(basename $(pwd))
export LOCAL_DIR=$(mktemp -d)
docker swarm init
docker stack deploy --compose-file=docker-compose.yml test_stack
while [ -z $(docker ps -q -f name=backup) ]; do

View file

@ -4,6 +4,11 @@ services:
image: offen/docker-volume-backup:test-sandbox
environment:
DOCKER_TLS_CERTDIR: ''
healthcheck:
test: ["CMD", "docker", "info"]
interval: 1s
timeout: 5s
retries: 50
volumes:
- $SOURCE:/code
- $TARBALL:/cache/image.tar.gz
@ -15,6 +20,11 @@ services:
worker1:
privileged: true
image: offen/docker-volume-backup:test-sandbox
healthcheck:
test: ["CMD", "docker", "info"]
interval: 1s
timeout: 5s
retries: 50
environment:
DOCKER_TLS_CERTDIR: ''
volumes:
@ -28,6 +38,11 @@ services:
worker2:
privileged: true
image: offen/docker-volume-backup:test-sandbox
healthcheck:
test: ["CMD", "docker", "info"]
interval: 1s
timeout: 5s
retries: 50
environment:
DOCKER_TLS_CERTDIR: ''
volumes:

View file

@ -2,13 +2,16 @@ services:
manager:
privileged: true
image: offen/docker-volume-backup:test-sandbox
environment:
DOCKER_TLS_CERTDIR: ''
healthcheck:
test: ["CMD", "docker", "info"]
interval: 1s
timeout: 5s
retries: 50
volumes:
- $SOURCE:/code
- $TARBALL:/cache/image.tar.gz
- docker_volume_backup_test_sandbox_image:/var/lib/docker/image
- docker_volume_backup_test_sandbox_overlay2:/var/lib/docker/overlay2
- $SOURCE:/code
- $TARBALL:/cache/image.tar.gz
- docker_volume_backup_test_sandbox_image:/var/lib/docker/image
- docker_volume_backup_test_sandbox_overlay2:/var/lib/docker/overlay2
volumes:
docker_volume_backup_test_sandbox_image:

View file

@ -5,9 +5,6 @@ services:
minio:
image: minio/minio:RELEASE.2020-08-04T23-10-51Z
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: on-failure
environment:
@ -24,9 +21,6 @@ services:
depends_on:
- minio
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: on-failure
environment:
@ -53,9 +47,6 @@ services:
healthcheck:
disable: true
deploy:
placement:
constraints:
- node.role == manager
replicas: 2
restart_policy:
condition: on-failure
@ -69,9 +60,6 @@ services:
volumes:
- pg_data:/var/lib/postgresql/data
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: on-failure

View file

@ -6,8 +6,6 @@ cd $(dirname $0)
. ../util.sh
current_test=$(basename $(pwd))
# docker swarm init
printf "test" | docker secret create minio_root_user -
printf "GMusLtUmILge2by+z890kQ" | docker secret create minio_root_password -

0
test/services/.swarm Normal file
View file

View file

@ -6,8 +6,6 @@ cd $(dirname $0)
. ../util.sh
current_test=$(basename $(pwd))
docker swarm init
docker stack deploy --compose-file=docker-compose.yml test_stack
while [ -z $(docker ps -q -f name=backup) ]; do

0
test/swarm/.swarm Normal file
View file

View file

@ -6,8 +6,6 @@ cd $(dirname $0)
. ../util.sh
current_test=$(basename $(pwd))
docker swarm init
docker stack deploy --compose-file=docker-compose.yml test_stack
while [ -z $(docker ps -q -f name=backup) ]; do

View file

@ -40,24 +40,20 @@ for dir in $(find $find_args | sort); do
export TARBALL=$tarball
export SOURCE=$(dirname $(pwd))
if [ -f ${dir}/.swarm ]; then
compose_file="swarm.yml"
if [ -f ${dir}/.multinodeswarm ]; then
compose_file="docker-compose.multinode.yml"
fi
docker compose -f $compose_file up -d
docker compose -f $compose_file up -d --wait
until $(docker compose exec manager /bin/sh -c 'docker info' > /dev/null 2>&1)
do
echo "Docker daemon not ready yet, retrying in 2s"
sleep 2
done
if [ -f ${dir}/.swarm ]; then
if [ -f "${dir}/.swarm" ]; then
docker compose exec manager docker swarm init
elif [ -f "${dir}/.multinodeswarm" ]; then
docker compose exec manager docker swarm init
manager_ip=$(docker compose exec manager docker node inspect $(docker compose exec manager docker node ls -q) --format '{{ .Status.Addr }}')
token=$(docker compose exec manager docker swarm join-token -q worker)
docker compose exec worker1 docker swarm join --token $token manager:2377
docker compose exec worker2 docker swarm join --token $token manager:2377
docker compose exec worker1 docker swarm join --token $token $manager_ip:2377
docker compose exec worker2 docker swarm join --token $token $manager_ip:2377
fi
docker compose exec manager /bin/sh -c "docker load -i /cache/image.tar.gz"