services:
  backend:
    platform: linux/amd64
    build:
      context: ./backend
      platforms:
        - linux/amd64
    container_name: print-calculator-backend
    ports:
      - "8000:8000"
    environment:
      - DB_URL=jdbc:postgresql://db:5432/printcalc
      - DB_USERNAME=printcalc
      - DB_PASSWORD=printcalc_secret
      - SPRING_PROFILES_ACTIVE=local
      - FILAMENT_COST_PER_KG=22.0
      - MACHINE_COST_PER_HOUR=2.50
      - ENERGY_COST_PER_KWH=0.30
      - PRINTER_POWER_WATTS=150
      - MARKUP_PERCENT=20
      - TEMP_DIR=/app/temp
      - PROFILES_DIR=/app/profiles
      - CLAMAV_HOST=192.168.1.147
      - CLAMAV_PORT=3310
      - STORAGE_LOCATION=/app/storage
    depends_on:
      - db
      - clamav
    restart: unless-stopped

  clamav:
    platform: linux/amd64
    image: clamav/clamav:latest
    container_name: print-calculator-clamav
    ports:
      - "3310:3310"
    restart: unless-stopped

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.dev
    container_name: print-calculator-frontend
    ports:
      - "80:80"
    depends_on:
      - backend
      - db
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    container_name: print-calculator-db
    environment:
      - POSTGRES_USER=printcalc
      - POSTGRES_PASSWORD=printcalc_secret
      - POSTGRES_DB=printcalc
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  postgres_data:
