diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..41eea4a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +# Build stage +FROM node:22-alpine as build + +WORKDIR /app + +# Copy package files +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy source code +COPY . . + +# Build-time env (Vite inlines these at build time) +ARG VITE_API_BASE_URL + +ENV VITE_API_BASE_URL=${VITE_API_BASE_URL} + +# Build the application +RUN npm run build + +# Production stage +FROM nginx:alpine + +# Copy built assets from build stage +COPY --from=build /app/dist /usr/share/nginx/html + +# Copy nginx configuration +COPY nginx.conf /etc/nginx/conf.d/default.conf + +# Expose port 80 +EXPOSE 80 + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --quiet --tries=1 --spider http://localhost/ || exit 1 + +# Start nginx +CMD ["nginx", "-g", "daemon off;"]