Files

24 lines
1.0 KiB
Docker
Raw Permalink Normal View History

2026-10-30 17:20:47 +01:00
# Бинго «Баланс 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"]