version: '3.8' services: postgres: image: postgres:15-alpine environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: edtech ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U user -d edtech"] interval: 5s timeout: 5s retries: 10 redis: image: redis:alpine ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 api: build: context: . dockerfile: Dockerfile ports: - "7860:7860" environment: SERVICES: api PORT: "7860" DATABASE_URL: postgresql://user:password@postgres:5432/edtech?schema=public REDIS_URL: redis://redis:6379 env_file: - .env depends_on: postgres: condition: service_healthy redis: condition: service_healthy restart: unless-stopped whatsapp-worker: build: context: . dockerfile: Dockerfile ports: - "8082:8082" environment: SERVICES: worker PORT: "8082" DATABASE_URL: postgresql://user:password@postgres:5432/edtech?schema=public REDIS_URL: redis://redis:6379 RAILWAY_INTERNAL_URL: http://api:7860 env_file: - .env depends_on: postgres: condition: service_healthy redis: condition: service_healthy api: condition: service_started restart: unless-stopped volumes: postgres_data: redis_data: