Files
Aknaproff/Dockerfile
Deploy Bot 8b36ea16ef v4.1.24: Добавлены поля arve_checked и arve_makstud
- 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 из репозитория
2026-01-16 11:36:00 +02:00

59 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"]