services:
  localstack:
    image: localstack/localstack-pro:latest  # Use Pro image
    ports:
      - "4566:4566"            # LocalStack Gateway
      - "4510-4559:4510-4559"  # External services port range
    environment:
      - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN}  # Add your auth token
      - SERVICES=s3,lambda,stepfunctions,events,iam,sts,logs,cloudwatch,sns,sqs
      - DEBUG=1
      - LAMBDA_EXECUTOR=docker-reuse  # Reuse Docker containers for Lambdas
      - LAMBDA_RUNTIME_ENVIRONMENT_TIMEOUT=300  # Increase Lambda startup timeout to 5 minutes
      - DOCKER_HOST=unix:///var/run/docker.sock
      - LOCALSTACK_HOST=localstack
      - AWS_DEFAULT_REGION=us-east-1
      - AWS_ACCESS_KEY_ID=test
      - AWS_SECRET_ACCESS_KEY=test
      - PERSISTENCE=1                 # Enable state persistence
      - DATA_DIR=/var/lib/localstack  # Where data is stored
    volumes:
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"  # Persistent data
      - "/var/run/docker.sock:/var/run/docker.sock"               # Docker access
    networks:
      - localstack-network

networks:
  localstack-network:
    driver: bridge
