# Stack local de recordaLexia: PostgreSQL + backend (Spring Boot) + frontend (Nginx). # Pensado para ejecución doméstica/homelab. Las credenciales se leen de .env # (ver .env.example); nunca van escritas aquí en texto plano. services: postgres: image: postgres:16-alpine container_name: recordalexia-postgres environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} TZ: Europe/Madrid volumes: - pgdata:/var/lib/postgresql/data healthcheck: # El backend espera a que la BD esté realmente lista, no solo arrancada. test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped backend: build: context: ./backend container_name: recordalexia-backend depends_on: postgres: condition: service_healthy environment: # Conexión a la BD: host interno del servicio postgres del compose. DB_HOST: postgres DB_PORT: "5432" DB_NAME: ${DB_NAME} # Spring enlaza estas dos sobre spring.datasource.* por binding relajado. SPRING_DATASOURCE_USERNAME: ${DB_USER} SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD} TZ: Europe/Madrid expose: - "8080" restart: unless-stopped frontend: build: context: ./frontend container_name: recordalexia-frontend depends_on: - backend ports: # Acceso a la app desde la red local del homelab (tablet en modo kiosko). - "${WEB_PORT:-8088}:80" restart: unless-stopped volumes: pgdata: