docker-compose.yml
Rama master · réplica de lectura del repositorio original.
services:
# --- Fleet walkthrough: two plain PostgreSQL instances ---
pg1:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
ports:
- "5433:5432"
volumes:
- pg1data:/var/lib/postgresql/data
command: >
postgres
-c shared_preload_libraries=pg_stat_statements
-c pg_stat_statements.track=all
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
pg2:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
ports:
- "5434:5432"
volumes:
- pg2data:/var/lib/postgresql/data
command: >
postgres
-c shared_preload_libraries=pg_stat_statements
-c pg_stat_statements.track=all
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
# --- Single monitored instance for the sidecar below ---
pg_sage:
image: postgres:17
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
command: >
postgres
-c shared_preload_libraries=pg_stat_statements
-c pg_stat_statements.track=all
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
sidecar:
build: ./sidecar
# The dashboard's "Restart now" exits with code 42 so startup-only
# settings take effect; the restart policy relaunches it, and
# SAGE_SUPERVISED=1 tells the sidecar a supervisor exists (G5-B09).
restart: unless-stopped
depends_on:
pg_sage:
condition: service_healthy
environment:
SAGE_DATABASE_URL: postgres://postgres:postgres@pg_sage:5432/postgres?sslmode=disable
SAGE_MODE: standalone
SAGE_SUPERVISED: "1"
SAGE_PROMETHEUS_PORT: "9187"
SAGE_RATE_LIMIT: "60"
ports:
- "8080:8080" # API + Dashboard
- "9187:9187" # Prometheus metrics
volumes:
pgdata:
pg1data:
pg2data: