mirror of
https://github.com/HarborGuard/HarborGuard.git
synced 2026-03-23 00:02:41 +08:00
44 lines
1.2 KiB
Docker
44 lines
1.2 KiB
Docker
# Dashboard-only image: no scanners, no Buildah, no Docker CLI
|
|
FROM node:20-alpine AS builder
|
|
WORKDIR /app
|
|
|
|
RUN apk add --no-cache python3 make g++
|
|
COPY package.json package-lock.json* pnpm-lock.yaml* yarn.lock* ./
|
|
RUN npm ci --ignore-scripts
|
|
|
|
COPY . .
|
|
RUN mv .env.example .env
|
|
RUN npm run build:docker
|
|
|
|
FROM node:20-alpine
|
|
WORKDIR /app
|
|
|
|
# Install Prisma CLI
|
|
RUN npm install -g prisma@6.14.0 --no-save
|
|
|
|
# Chromium for PDF reports
|
|
RUN apk add --no-cache \
|
|
chromium nss freetype freetype-dev harfbuzz ttf-freefont \
|
|
ca-certificates curl bash \
|
|
&& rm -rf /var/cache/apk/*
|
|
|
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser \
|
|
NODE_ENV=production \
|
|
HOSTNAME=0.0.0.0
|
|
|
|
COPY --from=builder /app/.next/standalone ./
|
|
COPY --from=builder /app/.next/static ./.next/static
|
|
COPY --from=builder /app/public ./public
|
|
COPY --from=builder /app/prisma ./prisma
|
|
COPY --from=builder /app/src/generated ./src/generated
|
|
COPY --from=builder /app/scripts ./scripts
|
|
|
|
ENV PORT=3000
|
|
EXPOSE 3000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
|
|
CMD curl -f http://localhost:${PORT:-3000}/api/health || exit 1
|
|
|
|
CMD ["sh", "-c", "npx prisma migrate deploy && node server.js"]
|