- FEAT: Добавлены поля arve_checked (int) и arve_makstud (string) в production_records
- POST /api/records: INSERT с arve_checked, arve_makstud
- PUT /api/records/🆔 UPDATE с arve_checked, arve_makstud
- Docker: docker-compose.prod.yml, ecosystem.config.cjs (PM2)
- wrangler.toml → wrangler.jsonc
- seed.sql: полные тестовые данные
- test_browser.js: E2E тесты
- Удалены старые HOTFIX-файлы (v4.1.11-v4.1.23)
- Удалены data/*.sqlite из репозитория
59 lines
1.8 KiB
Docker
59 lines
1.8 KiB
Docker
# Multi-stage build для оптимизации размера образа
|
||
|
||
# Stage 1: Build
|
||
FROM node:20-alpine AS builder
|
||
|
||
WORKDIR /app
|
||
|
||
# Копировать package files
|
||
COPY package*.json ./
|
||
|
||
# Установить зависимости
|
||
RUN npm ci --only=production
|
||
|
||
# Копировать исходники
|
||
COPY . .
|
||
|
||
# Собрать проект
|
||
RUN npm run build
|
||
|
||
# Stage 2: Runtime
|
||
FROM node:20-alpine
|
||
|
||
WORKDIR /app
|
||
|
||
# Установить dumb-init для правильной обработки сигналов
|
||
RUN apk add --no-cache dumb-init
|
||
|
||
# Создать пользователя без root
|
||
RUN addgroup -g 1001 -S nodejs && \
|
||
adduser -S nodejs -u 1001
|
||
|
||
# Копировать зависимости из 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 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
|
||
|
||
# Запуск с 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"]
|