Skip to content

Commit

Permalink
healthchecks! move to compose spec version!
Browse files Browse the repository at this point in the history
  • Loading branch information
BretFisher committed Jan 29, 2021
1 parent 69c11f9 commit 383b741
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 5 deletions.
29 changes: 24 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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:
Expand All @@ -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

Expand Down
21 changes: 21 additions & 0 deletions healthchecks/postgres.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions healthchecks/redis.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 383b741

Please sign in to comment.