healthchecks! move to compose spec version!

This commit is contained in:
Bret Fisher
2021-01-29 16:47:31 -05:00
parent 69c11f95a3
commit 383b74158e
3 changed files with 55 additions and 5 deletions

View File

@@ -1,9 +1,15 @@
version: "3"
# version is now using "compose spec"
# v2 and v3 are now combined!
# docker-compose v1.27+ required
services:
vote:
build: ./vote
# use python rather than gunicorn for local dev
command: python app.py
depends_on:
redis:
condition: service_healthy
volumes:
- ./vote:/app
ports:
@@ -14,7 +20,11 @@ services:
result:
build: ./result
# use nodemon rather than node for local dev
command: nodemon server.js
depends_on:
db:
condition: service_healthy
volumes:
- ./result:/app
ports:
@@ -28,26 +38,35 @@ services:
build:
context: ./worker
depends_on:
- "redis"
- "db"
redis:
condition: service_healthy
db:
condition: service_healthy
networks:
- back-tier
redis:
image: redis:5.0-alpine3.10
container_name: redis
volumes:
- "./healthchecks:/healthchecks"
healthcheck:
test: /healthchecks/redis.sh
interval: "5s"
ports: ["6379"]
networks:
- back-tier
db:
image: postgres:9.4
container_name: db
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
volumes:
- "db-data:/var/lib/postgresql/data"
- "./healthchecks:/healthchecks"
healthcheck:
test: /healthchecks/postgres.sh
interval: "5s"
networks:
- back-tier

21
healthchecks/postgres.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
set -eo pipefail
host="$(hostname -i || echo '127.0.0.1')"
user="${POSTGRES_USER:-postgres}"
db="${POSTGRES_DB:-$POSTGRES_USER}"
export PGPASSWORD="${POSTGRES_PASSWORD:-}"
args=(
# force postgres to not use the local unix socket (test "external" connectibility)
--host "$host"
--username "$user"
--dbname "$db"
--quiet --no-align --tuples-only
)
if select="$(echo 'SELECT 1' | psql "${args[@]}")" && [ "$select" = '1' ]; then
exit 0
fi
exit 1

10
healthchecks/redis.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
set -eo pipefail
host="$(hostname -i || echo '127.0.0.1')"
if ping="$(redis-cli -h "$host" ping)" && [ "$ping" = 'PONG' ]; then
exit 0
fi
exit 1