version: '3.8'

services:
  email-api:
    container_name: email-api
    image: node:22-slim
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./email_api:/app
      - /var/mail:/var/mail  # Maildir access for health check
    working_dir: /app
    env_file:
      - .env
    environment:
      - API_TOKEN=${API_TOKEN}
      - AWS_REGION=${AWS_REGION}
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - SMTP_HOST=${SMTP_HOST:-localhost}
      - SMTP_PORT=${SMTP_PORT:-25}
      - MAILCOW_API_KEY=${MAILCOW_API_KEY}
      - MAILCOW_API=${MAILCOW_API}
      - PGHOST=postgres
      - PGUSER=${PGUSER:-email_user}
      - PGPASSWORD=${PGPASSWORD:-email_password}
      - PGDATABASE=${PGDATABASE:-email_db}
      - PGPORT=${PGPORT:-5433}
    command: >
      bash -c "npm install && node app.js"
    depends_on:
      - postgres

  postgres:
    container_name: email-api-postgres
    image: postgres:16
    restart: unless-stopped
    network_mode: host
    environment:
      - POSTGRES_USER=${PGUSER:-email_user}
      - POSTGRES_PASSWORD=${PGPASSWORD:-email_password}
      - POSTGRES_DB=${PGDATABASE:-email_db}
    volumes:
      - email_postgres_data:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    command: >
      postgres -c port=${PGPORT:-5433}      

volumes:
  email_postgres_data: