compose.yaml
Rama main · réplica de lectura del repositorio original.
name: ${COMPOSE_PROJECT_NAME:-hermes}
services:
app:
build:
context: .
target: production
restart: unless-stopped
environment:
HERMES_APP_ENV: production
HERMES_DATABASE_HOST: postgres
HERMES_DATABASE_PORT: 5432
HERMES_DATABASE_NAME: ${POSTGRES_DB:-hermes}
HERMES_DATABASE_USER: ${POSTGRES_USER:-hermes}
HERMES_DATABASE_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
HERMES_DATABASE_ECHO: ${HERMES_DATABASE_ECHO:-false}
HERMES_COOKIE_SECURE: ${HERMES_COOKIE_SECURE:-true}
HERMES_SESSION_LIFETIME_DAYS: ${HERMES_SESSION_LIFETIME_DAYS:-7}
HERMES_SESSION_IDLE_MINUTES: ${HERMES_SESSION_IDLE_MINUTES:-30}
HERMES_LOGIN_FAILURE_LIMIT: ${HERMES_LOGIN_FAILURE_LIMIT:-5}
HERMES_LOGIN_FAILURE_WINDOW_MINUTES: ${HERMES_LOGIN_FAILURE_WINDOW_MINUTES:-15}
HERMES_LOGIN_BLOCK_MINUTES: ${HERMES_LOGIN_BLOCK_MINUTES:-15}
HERMES_LOGIN_ADMISSION_INTERVAL_MS: ${HERMES_LOGIN_ADMISSION_INTERVAL_MS:-250}
HERMES_TRUSTED_PROXY_NETWORKS: ${HERMES_TRUSTED_PROXY_NETWORKS:-[]}
ports:
- "${APP_BIND_ADDRESS:-127.0.0.1}:${APP_PORT:-8000}:8000"
depends_on:
postgres:
condition: service_healthy
healthcheck:
test:
[
"CMD",
"python",
"-c",
"import urllib.request; urllib.request.urlopen('http://localhost:8000/api/v1/health', timeout=2)",
]
interval: 10s
timeout: 3s
retries: 5
start_period: 15s
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-hermes}
POSTGRES_USER: ${POSTGRES_USER:-hermes}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 10
start_period: 10s
volumes:
postgres_data: