ARG NODE_IMAGE=docker.m.daocloud.io/library/node:24-alpine

FROM ${NODE_IMAGE}

ENV NODE_ENV=production \
    PORT=3000 \
    HTTPS_PORT=3443 \
    APP_DB_PATH=/app/data/app.sqlite \
    UPLOAD_DIR=/app/data/sources \
    TLS_DIR=/app/data/tls \
    PREVIEW_MAX_BYTES=16777216

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci --omit=dev && npm cache clean --force

COPY public ./public
COPY src ./src
COPY sql ./sql
COPY README.md ./

RUN mkdir -p /app/data/sources /app/data/tls \
    && chown -R node:node /app

USER node

VOLUME ["/app/data"]

EXPOSE 3000 3443

CMD ["node", "src/server.js"]
