Files
maverickApplicationsSite/Dockerfile
Stephen Minakian 7acb73b7fd
Some checks failed
Build and Deploy Website / build-and-deploy (push) Has been cancelled
Fix healthcheck: use 127.0.0.1 instead of localhost for Alpine compatibility
Alpine Linux resolves localhost to ::1 (IPv6), but nginx only listens on
IPv4. This caused healthchecks to fail, keeping the container in "starting"
state and preventing Traefik from creating a router.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 01:27:30 -07:00

40 lines
1020 B
Docker

# =============================================================================
# Stage 1: Build
# =============================================================================
FROM node:20-alpine AS builder
WORKDIR /app
# Copy package files first (for layer caching)
COPY package*.json ./
# Install dependencies
RUN npm ci
# Copy source code
COPY . .
# Build the application
RUN npm run build
# =============================================================================
# Stage 2: Production
# =============================================================================
FROM nginx:alpine AS production
# Copy custom nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Copy built assets from builder stage
COPY --from=builder /app/dist /usr/share/nginx/html
# Expose port 80
EXPOSE 80
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --quiet --tries=1 --spider http://127.0.0.1/ || exit 1
# Start nginx
CMD ["nginx", "-g", "daemon off;"]