services: web: build: context: . target: web ports: - "4200:3000" environment: - NODE_ENV=production - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://agentlens:agentlens@postgres:5432/agentlens depends_on: redis: condition: service_started postgres: condition: service_healthy migrate: condition: service_completed_successfully healthcheck: test: ["CMD", "wget", "--spider", "--quiet", "http://127.0.0.1:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 15s deploy: resources: limits: memory: 512M reservations: memory: 256M logging: driver: "json-file" options: max-size: "10m" max-file: "3" restart: always postgres: image: postgres:16-alpine environment: - POSTGRES_USER=agentlens - POSTGRES_PASSWORD=agentlens - POSTGRES_DB=agentlens volumes: - agentlens_postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U agentlens"] interval: 10s timeout: 5s retries: 5 deploy: resources: limits: memory: 256M logging: driver: "json-file" options: max-size: "10m" max-file: "3" restart: always migrate: build: context: . target: builder command: npx prisma migrate deploy --schema=packages/database/prisma/schema.prisma environment: - DATABASE_URL=postgresql://agentlens:agentlens@postgres:5432/agentlens depends_on: postgres: condition: service_healthy restart: "no" redis: image: redis:7-alpine command: redis-server --maxmemory 64mb --maxmemory-policy allkeys-lru volumes: - agentlens_redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 3 deploy: resources: limits: memory: 128M logging: driver: "json-file" options: max-size: "5m" max-file: "3" restart: always volumes: agentlens_postgres_data: agentlens_redis_data: