trading-platform-frontend/Dockerfile

65 lines
1.8 KiB
Docker

# =============================================================================
# OrbiQuant IA - Frontend Application
# Multi-stage Dockerfile for production deployment
# =============================================================================
# -----------------------------------------------------------------------------
# Stage 1: Dependencies
# -----------------------------------------------------------------------------
FROM node:20-alpine AS deps
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci
# -----------------------------------------------------------------------------
# Stage 2: Builder
# -----------------------------------------------------------------------------
FROM node:20-alpine AS builder
WORKDIR /app
# Build arguments for environment variables
ARG VITE_API_URL=http://localhost:3000
ARG VITE_WS_URL=ws://localhost:3000
ARG VITE_LLM_URL=http://localhost:8003
ARG VITE_ML_URL=http://localhost:8001
# Set environment variables for build
ENV VITE_API_URL=$VITE_API_URL
ENV VITE_WS_URL=$VITE_WS_URL
ENV VITE_LLM_URL=$VITE_LLM_URL
ENV VITE_ML_URL=$VITE_ML_URL
# Copy dependencies
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Build the application
RUN npm run build
# -----------------------------------------------------------------------------
# Stage 3: Production (nginx)
# -----------------------------------------------------------------------------
FROM nginx:alpine AS runner
# Copy custom nginx config
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Copy built application
COPY --from=builder /app/dist /usr/share/nginx/html
# Add health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:80/health || exit 1
# Expose port
EXPOSE 80
# Start nginx
CMD ["nginx", "-g", "daemon off;"]