# Бинго «Баланс 2.0» — один контейнер: Node.js со встроенным SQLite, без npm-зависимостей.
# Шрифты и все файлы страницы внутри образа; в работе контейнеру не нужен интернет.
FROM node:22.22-alpine

ENV NODE_ENV=production \
    PORT=8080 \
    DATA_DIR=/data \
    PUBLIC_DIR=/app/public

WORKDIR /app
COPY --chown=root:root package.json schema.sql ./
COPY --chown=root:root server ./server
COPY --chown=root:root public ./public

# База и резервные копии — в томе /data, владелец — непривилегированный пользователь node.
RUN mkdir -p /data && chown node:node /data
VOLUME ["/data"]
USER node

EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD node -e "fetch('http://127.0.0.1:8080/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"

CMD ["node", "--disable-warning=ExperimentalWarning", "server/server.mjs"]
