FROM node:22-bookworm-slim

ENV NODE_ENV=production \
    PORT=8790 \
    HOST=0.0.0.0 \
    NODE_OPTIONS=--dns-result-order=ipv4first \
    TOTAL_TOKKI_BROWSER=/usr/bin/chromium \
    TOTAL_TOKKI_DOWNLOADS=/app/downloads

RUN apt-get update \
    && apt-get install -y --no-install-recommends chromium ca-certificates curl fonts-noto-cjk \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev --no-audit --no-fund
COPY . .
RUN mkdir -p /app/data /app/downloads/webtoon /app/downloads/manga /app/downloads/novel /app/downloads/ani /app/downloads/temp /app/custom-cards /app/reader-fonts /app/reader-backgrounds

EXPOSE 8790
VOLUME ["/app/data", "/app/downloads", "/app/custom-cards", "/app/reader-fonts", "/app/reader-backgrounds"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 CMD node -e "fetch('http://127.0.0.1:8790/api/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"
CMD ["node", "server.mjs"]
