FROM node:20-alpine
RUN apk add --no-cache python3 make g++ su-exec
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev && node -e "require('better-sqlite3')"
COPY . .
ENV PORT=3000 DB_FILE=/data/spis.db
RUN mkdir -p /data && chown node:node /data && chmod 755 /app/docker-entrypoint.sh
VOLUME /data
EXPOSE 3000
# Serwer działa jako użytkownik node (nie root). Entrypoint startuje jako root tylko po to, żeby oddać mu /data.
ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["node", "index.js"]
