File size: 968 Bytes
9e4bb05 b8e6434 9e4bb05 b8e6434 9e4bb05 bf5c9dd 9e4bb05 bf5c9dd 9e4bb05 b0d930e 9e4bb05 b0d930e 9e4bb05 b0d930e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # Build stage
FROM node:18-alpine as builder
WORKDIR /app
# Copy dependency files
COPY package*.json ./
# Install dependencies
RUN npm ci --prefer-offline --no-audit
# Copy source code
COPY . .
# Build application
RUN npm run build
# Production stage
FROM node:18-alpine
WORKDIR /app
# Copy built application from builder
COPY --from=builder --chown=node:node /app/.next ./.next
COPY --from=builder --chown=node:node /app/public ./public
COPY --from=builder --chown=node:node /app/node_modules ./node_modules
COPY --from=builder --chown=node:node /app/package*.json ./
COPY --from=builder --chown=node:node /app/next.config.js ./
# Set environment
ENV NODE_ENV=production \
NEXT_TELEMETRY_DISABLED=1
# Switch to non-root user
USER node
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD wget --quiet --tries=1 --spider http://localhost:7860/ || exit 1
EXPOSE 7860
CMD ["npm", "start", "--", "-p", "7860"]
|