Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Docker Documentation25টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Containerization
  • Architecture
  • Installation
  • Images
  • Containers
  • Dockerfile
  • Volumes
  • Networks
  • Docker Compose
  • Environment Variables
  • Node.js + Docker
  • Next.js + Docker
  • Express.js + Docker
  • NestJS + Docker
  • Databases + Docker
  • Development Workflow
  • Production
  • Multi-stage Builds
  • Security
  • Optimization
  • CI/CD
  • Deployment
  • Real-world Project
  • Interview Questions
  1. Docs
  2. Docker
  3. Real-world Project — Full Stack Deploy
DockerAdvanced

Real-world Project — Full Stack Deploy

Next.js frontend + Express API + MongoDB + Redis + nginx — পুরো সিস্টেম এক compose file-এ — বাংলায়।

10টি অংশবাংলা ভাষায়

এত সব শিখলাম — এবার সেগুলোকে একসাথে একটি বাস্তব project-এ বসাই। Project: Blog SaaS — Next.js frontend, Express API, MongoDB ডেটা, Redis cache, nginx reverse proxy।

সম্পূর্ণ compose.prod.yml

compose.prod.ymlyaml
yaml
services:
  web:
    image: ghcr.io/myorg/blog-web:latest
    restart: unless-stopped
    env_file:
      - .env.production
    depends_on:
      - api

  api:
    image: ghcr.io/myorg/blog-api:latest
    restart: unless-stopped
    env_file:
      - .env.production
    healthcheck:
      test: ["CMD", "node", "-e", "fetch('http://localhost:5000/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
      interval: 30s
      timeout: 5s
      retries: 3
    depends_on:
      mongo:
        condition: service_healthy
      redis:
        condition: service_healthy

  mongo:
    image: mongo:7
    restart: unless-stopped
    volumes:
      - mongo-data:/data/db
    healthcheck:
      test: ["CMD", "mongosh", "--eval", "db.runCommand('ping').ok"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    volumes:
      - redis-data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  nginx:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - ./certs:/etc/nginx/certs:ro
    depends_on:
      - web
      - api

volumes:
  mongo-data:
  redis-data:

nginx routing

nginx.confnginx
nginx
# ফ্রন্টএন্ড
server {
  listen 80;
  server_name blog.example.com;

  location / {
    proxy_pass http://web:3000;
    proxy_set_header Host $host;
  }

  location /api/ {
    proxy_pass http://api:5000/;
    proxy_set_header Host $host;
  }
}

Deploy steps (server)

One-shot deploybash
bash
# 1. project folder এ যান
cd /opt/blog

# 2. config plus registry login
cat > .env.production <<'EOF'
MONGODB_URI=mongodb://mongo:27017/blog
REDIS_URL=redis://redis:6379
JWT_SECRET=<strong-random>
NEXT_PUBLIC_API_URL=https://blog.example.com/api
EOF

# 3. pull ও start
docker compose -f compose.prod.yml pull
docker compose -f compose.prod.yml up -d

# 4. check
docker compose -f compose.prod.yml ps
curl -I https://blog.example.com

সাধারণ pitfalls

  • .env.production-এ secret + server-এ chmod 600 করুন
  • Next.js-এ NEXT_PUBLIC_* build-time — সবসময় build-time API URL দরকার
  • HTTP API-কে HTTPS-এর ভেতর proxy করলে cookies ঠিক করতে secure সেট করুন
  • log-এ secret যেন না যায় — logger-এ filter
Monorepo হলে

সব service এক repo-তে থাকলে এক compose file-এ build: ./web ও build: ./api দিয়ে local affiliate — CI-তে registry-তে push করে server pull করে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরProduction DeploymentপরেরDocker Interview Questions
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com