services: web: build: context: .. dockerfile: web/Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=${DATABASE_URL} - DATABASE_AUTH_TOKEN=${DATABASE_AUTH_TOKEN} - JWT_SECRET=${JWT_SECRET} - CLERK_SECRET_KEY=${CLERK_SECRET_KEY} - VITE_CLERK_PUBLISHABLE_KEY=${VITE_CLERK_PUBLISHABLE_KEY} - STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY} - STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET} - VITE_STRIPE_PUBLISHABLE_KEY=${VITE_STRIPE_PUBLISHABLE_KEY} - REDIS_URL=redis://redis:6379 - RESEND_API_KEY=${RESEND_API_KEY} - VITE_SENTRY_DSN=${VITE_SENTRY_DSN} - WS_PORT=3001 depends_on: redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s restart: unless-stopped redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 restart: unless-stopped volumes: redis_data: