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:
58
Dockerfile
58
Dockerfile
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user