v4.1.26: Docker hotfix — рабочие конфиги для Synology ARM

- FIX: Dockerfile — правильный multi-stage build
- FIX: docker-compose.yml — убраны нерабочие конфиги
- FIX: docker-entrypoint.sh — добавлен правильный entrypoint
- FIX: D1_BINDING=aknaproff-db во всех конфигах
- wrangler.jsonc: исправлен D1_BINDING
- public/original.html: cache version update
- Удалён HOTFIX_v4.1.24.md, добавлен HOTFIX_v4.1.26.md
This commit is contained in:
Deploy Bot
2026-01-18 20:56:00 +02:00
parent 8b36ea16ef
commit 060dcce370
8 changed files with 194 additions and 290 deletions

View File

@@ -1,58 +1,30 @@
# Multi-stage build для оптимизации размера образа
# Stage 1: Build
FROM node:20-alpine AS builder
# syntax=docker/dockerfile:1
# ---------- Build stage ----------
FROM node:20-bookworm-slim AS builder
WORKDIR /app
# Копировать package files
COPY package*.json ./
COPY package.json package-lock.json ./
RUN npm install
# Установить зависимости
RUN npm ci --only=production
# Копировать исходники
COPY . .
# Собрать проект
RUN npm run build
# Stage 2: Runtime
FROM node:20-alpine
# ---------- Runtime stage ----------
FROM node:20-bookworm-slim
WORKDIR /app
# Установить dumb-init для правильной обработки сигналов
RUN apk add --no-cache dumb-init
ENV NODE_ENV=production \
WRANGLER_SEND_METRICS=false
# Создать пользователя без root
RUN addgroup -g 1001 -S nodejs && \
adduser -S nodejs -u 1001
# Copy everything from builder (includes node_modules, dist, migrations, etc.)
COPY --from=builder /app /app
# Копировать зависимости из builder
COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
COPY --from=builder --chown=nodejs:nodejs /app/dist ./dist
COPY --from=builder --chown=nodejs:nodejs /app/package.json ./
COPY --from=builder --chown=nodejs:nodejs /app/wrangler.jsonc ./
COPY --from=builder --chown=nodejs:nodejs /app/migrations ./migrations
COPY --from=builder --chown=nodejs:nodejs /app/seed.sql ./
RUN chmod +x /app/docker-entrypoint.sh
# Создать директорию для локальной БД
RUN mkdir -p .wrangler/state/v3/d1 && \
chown -R nodejs:nodejs .wrangler
# Переключиться на непривилегированного пользователя
USER nodejs
# Открыть порт
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD wget --quiet --tries=1 --spider http://localhost:3000 || exit 1
# Persist D1 SQLite data and seed marker between restarts
VOLUME ["/data"]
# Запуск с dumb-init
ENTRYPOINT ["dumb-init", "--"]
# Команда запуска
CMD ["sh", "-c", "npm run db:reset && npx wrangler pages dev dist --d1=webapp-production --local --ip 0.0.0.0 --port 3000"]
ENTRYPOINT ["/app/docker-entrypoint.sh"]