services:
  mongo:
    image: mongo:7.0
    container_name: drohnenfuehrer-mongo
    restart: unless-stopped
    environment:
      - MONGO_INITDB_ROOT_USERNAME=drohnenfuehrer
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
      - MONGO_INITDB_DATABASE=drohnenfuehrer
    volumes:
      - mongo-data:/data/db
    healthcheck:
      test: ["CMD", "mongosh", "--username", "drohnenfuehrer", "--password", "${MONGO_PASSWORD}", "--authenticationDatabase", "admin", "--eval", "db.adminCommand('ping')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  backend:
    build: ./backend
    container_name: drohnenfuehrer-backend
    restart: unless-stopped
    # Port 5011 bound to localhost only – NOT accessible from external IPs.
    # Portal nginx reaches the backend via the shared jagd-network (container name).
    ports:
      - "127.0.0.1:5011:5000"
    networks:
      - default
      - jagd-network
    environment:
      - NODE_ENV=production
      - MONGO_URI=mongodb://drohnenfuehrer:${MONGO_PASSWORD}@mongo:27017/drohnenfuehrer?authSource=admin
      - JWT_SECRET=${JWT_SECRET}
      - JWT_EXPIRES_IN=24h
      - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost:8081}
      - ADMIN_THORSTEN_PASSWORD=${ADMIN_THORSTEN_PASSWORD}
      - GEOCODE_URL=https://nominatim.openstreetmap.org/search
      - GEOCODE_USER_AGENT=drohnenfuehrer-app/1.0 (t.meyer@jaegerschaft-fallingbostel.de)
      - GEOCODE_MIN_DELAY_MS=1100
    depends_on:
      mongo:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://localhost:5000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  frontend:
    build:
      context: ./frontend
      args:
        - PUBLIC_URL=/drohnenfuehrer/
        - REACT_APP_API_URL=${REACT_APP_API_URL:-}
    container_name: drohnenfuehrer-frontend
    restart: unless-stopped
    ports:
      - "127.0.0.1:8081:80"
    networks:
      - default
      - jagd-network
    depends_on:
      - backend
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://localhost/health"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  mongo-data:
    name: drohnenfuehrer-mongo-data

networks:
  default: {}
  jagd-network:
    external: true
    name: jagd-network
