services:
  app:
    image: kantorge/yaffa:latest
    ports:
      - "80:80"
    env_file:
      - .env
    volumes:
      - yaffa_storage:/var/www/html/storage
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped
    networks:
      - yaffa-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

  db:
    image: mysql/mysql-server:8.0
    ports:
      - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
      MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
      MYSQL_ROOT_HOST: '%'
      MYSQL_DATABASE: '${DB_DATABASE}'
      MYSQL_USER: '${DB_USERNAME}'
      MYSQL_PASSWORD: '${DB_PASSWORD}'
    volumes:
      - yaffa_db:/var/lib/mysql
    restart: unless-stopped
    networks:
      - yaffa-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "${DB_USERNAME}", "-p${DB_PASSWORD}"]
      interval: 30s
      timeout: 10s
      retries: 3

  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025" # SMTP server
      - "8025:8025" # Web UI
    container_name: mailhog
    networks:
      - yaffa-network

  scheduler:
    image: kantorge/yaffa:latest
    command: php artisan schedule:work
    env_file:
      - .env
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped
    networks:
      - yaffa-network

volumes:
  yaffa_db:
  yaffa_storage:

networks:
  yaffa-network:
    driver: bridge