mirror of
https://github.com/dockersamples/example-voting-app.git
synced 2026-07-11 01:19:17 +00:00
healthchecks! move to compose spec version!
This commit is contained in:
@@ -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
21
healthchecks/postgres.sh
Executable 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
10
healthchecks/redis.sh
Executable 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
|
||||
Reference in New Issue
Block a user