services: postgres: image: postgres:15-alpine container_name: claimsafe-postgres restart: always environment: POSTGRES_DB: claimsafe POSTGRES_USER: claimsafe POSTGRES_PASSWORD: password volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U claimsafe -d claimsafe"] interval: 5s timeout: 5s retries: 5 env_file: - .env redis: image: redis:7-alpine container_name: claimsafe-redis restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 env_file: - .env pdf-service: build: context: ./pdf-service dockerfile: Dockerfile container_name: claimsafe-pdf-service restart: always env_file: - .env environment: - PORT=8000 api: build: context: ./api dockerfile: Dockerfile container_name: claimsafe-api command: npm run dev restart: always depends_on: postgres: condition: service_healthy redis: condition: service_healthy env_file: - .env volumes: - ./api/uploads:/app/uploads frontend: build: context: ./frontend dockerfile: Dockerfile container_name: claimsafe-frontend restart: always env_file: - .env nginx: build: context: ./nginx dockerfile: Dockerfile container_name: claimsafe-nginx restart: always ports: - "80:80" - "443:443" depends_on: - api - frontend volumes: postgres_data: