compose.dev.yaml
Rama main · réplica de lectura del repositorio original.
name: ${COMPOSE_PROJECT_NAME:-hermes}-dev
services:
backend:
build:
context: .
target: development
working_dir: /workspace/backend
command:
[
"sh",
"-c",
"alembic upgrade head && exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --no-proxy-headers",
]
environment:
HERMES_APP_ENV: development
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: "false"
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:-[]}
volumes:
- ./backend:/workspace/backend
ports:
- "127.0.0.1:${BACKEND_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
frontend:
image: node:22.23.1-alpine
working_dir: /workspace/frontend
command: ["sh", "-c", "npm ci && npm start -- --host 0.0.0.0"]
environment:
HERMES_PROXY_TARGET: http://backend:8000
volumes:
- ./frontend:/workspace/frontend
- frontend_node_modules:/workspace/frontend/node_modules
ports:
- "127.0.0.1:${FRONTEND_PORT:-4200}:4200"
depends_on:
backend:
condition: service_healthy
healthcheck:
test:
[
"CMD",
"node",
"-e",
"fetch('http://localhost:4200').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))",
]
interval: 10s
timeout: 3s
retries: 10
start_period: 30s
postgres:
image: postgres:17-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-hermes}
POSTGRES_USER: ${POSTGRES_USER:-hermes}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
volumes:
- postgres_dev_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:
frontend_node_modules:
postgres_dev_data: