version: '3.8' services: # Redis cache service on custom port 6380 (instead of default 6379) redis: image: redis:7-alpine container_name: pulse-redis restart: unless-stopped ports: - "6380:6379" volumes: - redis_data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 # Next.js application on port 3100 (instead of 3000) app: build: context: . dockerfile: Dockerfile container_name: pulse-app restart: unless-stopped ports: - "3100:3100" env_file: - .env.local environment: # Application settings NODE_ENV: production PORT: 3100 # Redis configuration REDIS_URL: redis://redis:6379 # Autotask API Configuration AUTOTASK_API_URL: ${AUTOTASK_API_URL} AUTOTASK_USERNAME: ${AUTOTASK_USERNAME} AUTOTASK_SECRET: ${AUTOTASK_SECRET} AUTOTASK_API_INTEGRATION_CODE: ${AUTOTASK_API_INTEGRATION_CODE} # Datto RMM API Configuration DATTO_RMM_API_URL: ${DATTO_RMM_API_URL} DATTO_RMM_API_KEY: ${DATTO_RMM_API_KEY} DATTO_RMM_API_SECRET: ${DATTO_RMM_API_SECRET} # Addigy API Configuration ADDIGY_API_URL: ${ADDIGY_API_URL} ADDIGY_API_TOKEN: ${ADDIGY_API_TOKEN} ADDIGY_ORG_ID: ${ADDIGY_ORG_ID} depends_on: redis: condition: service_healthy volumes: # Mount .env.local for development (remove in production) - ./.env.local:/app/.env.local:ro volumes: redis_data: driver: local networks: default: name: pulse-network