services: unified-worker: build: context: . dockerfile: Dockerfile container_name: unified-email-worker restart: unless-stopped network_mode: host # Für lokalen SMTP-Zugriff volumes: # Domain-Liste (eine Domain pro Zeile) - ./domains.txt:/etc/email-worker/domains.txt:ro # Logs - ./logs:/var/log/email-worker environment: # AWS Credentials - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - AWS_REGION=us-east-2 # Domains via File (domains.txt) - DOMAINS_FILE=/etc/email-worker/domains.txt # Alternative: Domains direkt als Liste # - DOMAINS=andreasknuth.de,bayarea-cc.com,bizmatch.net # Worker Settings - WORKER_THREADS=${WORKER_THREADS:-10} - POLL_INTERVAL=${POLL_INTERVAL:-20} - MAX_MESSAGES=${MAX_MESSAGES:-10} - VISIBILITY_TIMEOUT=${VISIBILITY_TIMEOUT:-300} # SMTP (lokal zum DMS) - SMTP_HOST=${SMTP_HOST:-localhost} - SMTP_PORT=${SMTP_PORT:-25} - SMTP_POOL_SIZE=${SMTP_POOL_SIZE:-5} - SMTP_USE_TLS=false # Internal SMTP Port (bypasses transport_maps) - INTERNAL_SMTP_PORT=25 # LMTP (Optional - für direktes Dovecot Delivery) - LMTP_ENABLED=${LMTP_ENABLED:-false} - LMTP_HOST=${LMTP_HOST:-localhost} - LMTP_PORT=${LMTP_PORT:-24} # DynamoDB Tables - DYNAMODB_RULES_TABLE=${DYNAMODB_RULES_TABLE:-email-rules} - DYNAMODB_MESSAGES_TABLE=${DYNAMODB_MESSAGES_TABLE:-ses-outbound-messages} - DYNAMODB_BLOCKED_TABLE=${DYNAMODB_BLOCKED_TABLE:-email-blocked-senders} # Bounce Handling - BOUNCE_LOOKUP_RETRIES=${BOUNCE_LOOKUP_RETRIES:-3} - BOUNCE_LOOKUP_DELAY=${BOUNCE_LOOKUP_DELAY:-1.0} # Monitoring - METRICS_PORT=8000 - HEALTH_PORT=8080 ports: # Prometheus Metrics - "8000:8000" # Health Check - "8080:8080" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s logging: driver: "json-file" options: max-size: "50m" max-file: "10" deploy: resources: limits: memory: 512M reservations: memory: 256M