FROM node:24-slim AS web
WORKDIR /build
COPY app/package.json app/package-lock.json ./
RUN npm ci --no-fund --no-audit
COPY app/ ./
RUN npm run build

FROM node:24-slim
RUN apt-get update \
    && apt-get install -y --no-install-recommends python3 python3-venv ffmpeg \
    && rm -rf /var/lib/apt/lists/* \
    && python3 -m venv /opt/venv \
    && /opt/venv/bin/pip install --no-cache-dir yt-dlp mutagen bgutil-ytdlp-pot-provider

WORKDIR /app
COPY server/package.json server/package-lock.json ./
RUN npm ci --omit=dev --no-fund --no-audit
COPY server/src ./src
COPY server/entrypoint.sh ./
COPY --from=web /build/dist ./web-dist

ENV PYTHON_PATH=/opt/venv/bin/python \
    YTDLP_PATH=/opt/venv/bin/yt-dlp \
    MUSIC_LIBRARY=/music \
    STAGING_DIR=/staging \
    DB_PATH=/data/chough.db \
    WEB_DIST=/app/web-dist \
    PORT=8080

EXPOSE 8080
ENTRYPOINT ["sh", "entrypoint.sh"]
