Skip to main content
Course/Module 12/Topic 3 of 4Advanced

Production Deployment Strategies

Learn various deployment strategies including static hosting, containerization, and cloud deployment options.

90 minBy Priygop TeamLast updated: Feb 2026

Static Hosting

Deploy React applications to static hosting services like Netlify, Vercel, and AWS S3 with proper configuration.

Netlify Deployment

Example
# netlify.toml
[build]
  publish = "build"
  command = "npm run build"

[build.environment]
  NODE_VERSION = "18"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

[headers]
  for = "/static/*"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"

Docker Deployment

Example
# Dockerfile for React app
FROM node:18-alpine as build

WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

CI/CD Pipeline

Example
# .github/workflows/deploy.yml
name: Deploy to Production

on:
  push:
    branches: [main]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '18'
        cache: 'npm'
    
    - name: Install dependencies
      run: npm ci
    
    - name: Run tests
      run: npm test -- --coverage --watchAll=false
    
    - name: Build application
      run: npm run build
      env:
        REACT_APP_API_URL: ${{ secrets.REACT_APP_API_URL }}
    
    - name: Deploy to AWS S3
      uses: aws-actions/configure-aws-credentials@v2
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1
    
    - name: Upload to S3
      run: aws s3 sync build/ s3://my-react-app --delete

Blue-Green Deployment

Example
// Blue-green deployment strategy
const deploymentConfig = {
    blue: {
        version: '1.0.0',
        url: 'https://blue.myapp.com',
        traffic: 0
    },
    green: {
        version: '1.1.0',
        url: 'https://green.myapp.com',
        traffic: 100
    }
};

// Gradual traffic shifting
const shiftTraffic = (from, to, percentage) => {
    // Implementation for traffic shifting
    console.log(`Shifting ${percentage}% traffic from ${from} to ${to}`);
};

Mini-Project: Complete Deployment Pipeline

Example
// Complete deployment configuration
# docker-compose.yml
version: '3.8'

services:
  react-app:
    build: .
    ports:
      - "3000:80"
    environment:
      - NODE_ENV=production
      - REACT_APP_API_URL=http://api:3001
    depends_on:
      - nginx

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./build:/usr/share/nginx/html

# nginx.conf
events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
    
    server {
        listen 80;
        server_name localhost;
        root /usr/share/nginx/html;
        index index.html;
        
        location / {
            try_files $uri $uri/ /index.html;
        }
        
        location /static/ {
            expires 1y;
            add_header Cache-Control "public, immutable";
        }
    }
}

# package.json scripts
{
  "scripts": {
    "build": "react-scripts build",
    "build:docker": "docker build -t react-app .",
    "deploy:staging": "npm run build && aws s3 sync build/ s3://staging-bucket",
    "deploy:production": "npm run build && aws s3 sync build/ s3://production-bucket"
  }
}

Additional Resources

Recommended Reading

  • React Production Deployment Guide
  • Webpack Optimization Guide
  • Docker for React Applications
  • Monitoring Best Practices

Online Resources

  • React Deployment Tutorial
  • Performance Optimization Guide
  • CI/CD Pipeline Setup
  • Production Monitoring Tools
Chat on WhatsApp
Priygop - Leading Professional Development Platform | Expert Courses & Interview Prep