Added health check and deployment setup for one container per customer. Fixes #12

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 16:34:40 +02:00
co-authored by Claude Opus 5.5
parent c1d998878a
commit 156fe1a0f4
14 changed files with 799 additions and 4 deletions
+57
View File
@@ -0,0 +1,57 @@
# Shared infrastructure for running one Rezervovator container per customer:
# the reverse proxy and the PostgreSQL server. Customer containers are not listed
# here, they are created with ./rezervator.sh (see README.md in this directory).
name: ${REZERVATOR_PREFIX:-rezervator}
services:
proxy:
image: traefik:v3
container_name: ${REZERVATOR_PREFIX:-rezervator}-proxy
restart: unless-stopped
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=${REZERVATOR_PREFIX:-rezervator}
# Only containers of this stack, so two stacks on one host don't mix
- --providers.docker.constraints=Label(`rezervator.stack`,`${REZERVATOR_PREFIX:-rezervator}`)
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
# Let's Encrypt certificates, used when REZERVATOR_TLS=true
- --certificatesresolvers.le.acme.email=${ACME_EMAIL:-}
- --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
ports:
- "${HTTP_PORT:-80}:80"
- "${HTTPS_PORT:-443}:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- letsencrypt:/letsencrypt
networks:
- rezervator
postgres:
image: postgres:17
container_name: ${REZERVATOR_PREFIX:-rezervator}-postgres
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env (./rezervator.sh init creates it)}
# Every customer instance may open up to CUSTOMER_MAX_CONNECTIONS connections
command: ["postgres", "-c", "max_connections=${PG_MAX_CONNECTIONS:-300}"]
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U postgres"]
interval: 5s
timeout: 3s
retries: 20
networks:
- rezervator
networks:
rezervator:
name: ${REZERVATOR_PREFIX:-rezervator}
volumes:
letsencrypt:
postgres-data: