Files

49 lines
1.1 KiB
Docker

# Stage 1: Build the Angular application
FROM oven/bun:alpine AS builder
# Install nodejs to support Angular prerendering worker threads
RUN apk add --no-cache nodejs
# Set working directory
WORKDIR /app
# Copy package files
COPY package.json bun.lock* ./
# Install dependencies
RUN bun install
# Copy source code
COPY . .
# Build the application for production
RUN bun run build
# Stage 2: Production image
FROM oven/bun:alpine AS production
# Set working directory
WORKDIR /app
# Copy package files
COPY package.json bun.lock* ./
# Install only production dependencies
RUN bun install --production
# Copy built application from builder stage
COPY --from=builder /app/dist ./dist
# Set environment to production
ENV NODE_ENV=production
# Expose port (default Express port)
EXPOSE 4000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD bun -e "require('http').get('http://localhost:4000', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
# Start the application
CMD ["bun", "run", "dist/vac-optimizer/server/server.mjs"]