From 97de061e604525265369521821616bc4da0cc718 Mon Sep 17 00:00:00 2001 From: mukeshs Date: Thu, 16 Oct 2025 21:31:32 +0530 Subject: [PATCH] docker update --- docker-compose.yml | 35 +++++++++++++++-- fuse-starter-v20.0.0/Dockerfile | 67 ++++++++++++++++++++++----------- 2 files changed, 75 insertions(+), 27 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8576d28..9390b8e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,14 +14,19 @@ services: - "3307:3306" volumes: - mysql_data:/var/lib/mysql + networks: + - vending-network healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpass"] + interval: 10s timeout: 5s retries: 10 + start_period: 30s backend: build: context: ./Machine-Backend + dockerfile: Dockerfile container_name: vending-backend env_file: - ./Machine-Backend/.env @@ -29,12 +34,20 @@ services: - "8087:5000" volumes: - ./Machine-Backend:/app + networks: + - vending-network depends_on: db: condition: service_healthy restart: always + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:5000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s command: > - sh -c "python seed_user.py && gunicorn --bind 0.0.0.0:5000 run:app" + sh -c "python seed_user.py && gunicorn --bind 0.0.0.0:5000 --workers 2 --timeout 120 run:app" frontend: build: @@ -43,9 +56,23 @@ services: container_name: vending-frontend ports: - "8086:80" + networks: + - vending-network depends_on: - - backend + backend: + condition: service_healthy restart: always + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +networks: + vending-network: + driver: bridge volumes: - mysql_data: \ No newline at end of file + mysql_data: + driver: local \ No newline at end of file diff --git a/fuse-starter-v20.0.0/Dockerfile b/fuse-starter-v20.0.0/Dockerfile index 3237d8b..ee67123 100644 --- a/fuse-starter-v20.0.0/Dockerfile +++ b/fuse-starter-v20.0.0/Dockerfile @@ -6,19 +6,16 @@ FROM node:18-alpine AS builder # Set working directory WORKDIR /app -# Copy only package files first (for caching) +# Copy package files COPY package*.json ./ -# Install dependencies efficiently -# --legacy-peer-deps fixes Angular peer conflicts -# --no-audit and --no-fund speed up installation +# Install dependencies RUN npm ci --legacy-peer-deps --no-audit --no-fund -# Copy source code (after dependencies cached) +# Copy source code COPY . . -# Build the Angular app in production mode -# Disable analytics + progress bar to reduce overhead +# Build Angular app for production RUN npm run build -- --configuration production --no-progress # =============================== @@ -26,24 +23,48 @@ RUN npm run build -- --configuration production --no-progress # =============================== FROM nginx:alpine AS production -# Copy built Angular files from builder +# Copy built files from builder stage COPY --from=builder /app/dist/fuse-angular /usr/share/nginx/html -# Angular-friendly Nginx config -RUN echo 'server { \ - listen 80; \ - server_name localhost; \ - root /usr/share/nginx/html; \ - index index.html; \ - location / { \ - try_files $uri $uri/ /index.html; \ - } \ - location /api/ { \ - proxy_pass http://backend:5000/; \ - } \ -}' > /etc/nginx/conf.d/default.conf +# Create custom Nginx configuration +COPY <<'EOF' /etc/nginx/conf.d/default.conf +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Enable gzip compression + gzip on; + gzip_types text/css application/javascript application/json image/svg+xml; + gzip_comp_level 6; + + # Angular routing - serve index.html for all routes + location / { + try_files $uri $uri/ /index.html; + } + + # Proxy API requests to backend + location /api/ { + proxy_pass http://backend:5000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} +EOF EXPOSE 80 -# Run Nginx in foreground -CMD ["nginx", "-g", "daemon off;"] +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file