FROM node:18-alpine

# RPi 3 Speicher-Optimierung
ENV NODE_OPTIONS="--max_old_space_size=256"

WORKDIR /app

# ============ DEPENDENCIES ============
# Audio-Bibliotheken für ALSA/PulseAudio
RUN apk add --no-cache \
    python3 \
    make \
    g++ \
    curl \
    ca-certificates \
    tini \
    alsa-lib \
    alsa-utils \
    pulseaudio \
    sox \
    git \
    cmake \
    pkgconfig

# ============ PYTHON + VOSK ============
# Vosk braucht Python
RUN apk add --no-cache \
    python3-dev \
    py3-pip

RUN pip install --no-cache-dir \
    vosk \
    pyaudio \
    paho-mqtt \
    pyyaml

# ============ NODE DEPENDENCIES ============
COPY package*.json ./

RUN npm ci --only=production && \
    npm cache clean --force

# ============ APPLICATION ============
COPY src ./src
COPY config ./config
COPY scripts ./scripts

# Create directories
RUN mkdir -p logs data /data/vosk-model-small-de-0.15

# ============ VOSK MODEL DOWNLOAD ============
RUN chmod +x scripts/download-vosk-model.sh && \
    scripts/download-vosk-model.sh

# ============ SECURITY ============
RUN addgroup -g 1001 -S nodejs && \
    adduser -S nodejs -u 1001 && \
    chown -R nodejs:nodejs /app

USER nodejs

# ============ HEALTH CHECK ============
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
    CMD curl -f http://localhost:8090/health || exit 1

# ============ STARTUP ============
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "src/index.js"]
