EQVPS

VPS پر Docker Compose اسٹیک کیسے ڈیپلائے کریں

Docker Compose کے ساتھ VPS پر ملٹی-کنٹینر اسٹیک ڈیپلائے کریں: docker-compose.yml لکھیں، سیکریٹس کو .env میں رکھیں، ری بوٹ کے بعد ری اسٹارٹ کے ساتھ اسے چلائیں، اور صرف وہی پورٹس شائع کریں جو آپ واقعی چاہتے ہیں۔ ایک ویب ایپ، ڈیٹابیس اور reverse proxy کے ساتھ کاپی پیسٹ مثال۔

Docker Compose ایک ملٹی-کنٹینر اسٹیک کو ایک فائل میں بیان کرتا ہے اور اسے ایک کمانڈ سے چلاتا ہے۔ یہ ڈیپلائے ہاؤ-ٹو ہے؛ اگر نہیں کیا تو پہلے Docker انسٹال کریں۔ AI-ایجنٹ-مخصوص اسٹیک (ایجنٹ + ویکٹر DB + Redis) کے لیے دیکھیں AI ایجنٹس کے لیے docker-compose۔

1. ایک اسٹیک: ایپ + ڈیٹابیس + reverse proxy

# /opt/stack/docker-compose.yml
services:
  app:
    image: your/app:latest
    restart: unless-stopped
    env_file: [.env]
    depends_on: [db]
    # no ports: — reached only through the proxy below

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes: ["pg:/var/lib/postgresql/data"]   # internal only

  caddy:                                        # HTTPS automatically
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]                 # the only public entrypoint
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes: { pg: {}, caddy_data: {} }

سیکریٹس .env میں رہتے ہیں، کبھی compose فائل میں نہیں:

# /opt/stack/.env  (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string

ایک کم سے کم Caddyfile آپ کے ڈومین کو ایپ کی طرف پروکسی کرتا ہے اور HTTPS خود لے آتا ہے:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. اسے چلائیں

cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app

ہر سروس پر restart: unless-stopped + بوٹ پر فعال Docker = اسٹیک ری بوٹ کے بعد خود واپس آ جاتا ہے۔

3. روزمرہ کی کمانڈز

docker compose pull && docker compose up -d   # update images
docker compose down                            # stop the stack
docker compose restart app                     # restart one service

وہ حصہ جو لوگ غلط کرتے ہیں: ظاہر شدہ پورٹس

Docker پورٹس iptables کے ذریعے شائع کرتا ہے، تو ports: ["5432:5432"] والا کنٹینر اُس UFW فائر وال کے پیچھے بھی انٹرنیٹ سے قابلِ رسائی ہے جسے آپ بند سمجھتے تھے۔ صرف عوامی انٹری پوائنٹ شائع کریں (80/443 پر پروکسی)؛ ڈیٹابیس اور کیش کو compose نیٹ ورک پر یا 127.0.0.1 سے بندھا رکھیں۔ ویب ٹریفک سرو کرنے والی کسی بھی چیز کو ڈیڈیکیٹڈ-IP پلان چاہیے؛ ایک UFW فائر وال کے ساتھ جوڑیں۔

ایک IP کے پیچھے پورے اسٹیک کے لیے دیکھیں متعدد سروسز سیلف-ہوسٹ کرنا۔ تقریباً ایک منٹ میں root، NVMe، کوئی KYC نہیں، کرپٹو میں ادائیگی۔

عمومی سوالات

VPS پر Docker Compose اسٹیک کیسے ڈیپلائے کروں؟

Compose پلگ ان کے ساتھ Docker انسٹال کریں، ہر سروس کو بیان کرنے والی docker-compose.yml لکھیں، سیکریٹس کو git-ignored .env میں رکھیں، پھر docker compose up -d۔ ہر سروس پر restart: unless-stopped سیٹ کریں اور بوٹ پر Docker فعال کریں تاکہ اسٹیک ری بوٹ سہہ لے۔ نیچے کی مثال ایک ویب ایپ، Postgres اور ایک Caddy reverse proxy چلاتی ہے۔

سیکریٹس کہاں جاتے ہیں — compose فائل میں؟

نہیں۔ انہیں ایک .env فائل میں رکھیں (chmod 600، git-ignored) اور compose میں ${VAR} کے طور پر حوالہ دیں، یا Docker secrets استعمال کریں۔ پاس ورڈ یا API کیز کبھی docker-compose.yml میں کمٹ نہ کریں — لائیو کریڈنشلز والی لیک شدہ فائل کلاسک غلطی ہے۔

کیا اسٹیک ری بوٹ کے بعد واپس آئے گا؟

صرف تب جب آپ اسے کہیں۔ ہر سروس پر restart: unless-stopped (یا always) سیٹ کریں اور بوٹ پر Docker فعال کریں (systemctl enable docker)۔ پھر docker compose up -d ری بوٹ سہہ لیتا ہے اور کریش شدہ کنٹینرز دوبارہ چلاتا ہے۔

کون سے پورٹس ظاہر ہوتے ہیں؟

صرف وہ جو آپ ports: سے شائع کرتے ہیں۔ اندرونی سروسز (ڈیٹابیس، کیش) کو compose نیٹ ورک یا 127.0.0.1 سے باندھیں اور صرف عوامی انٹری پوائنٹ شائع کریں — عام طور پر 80/443 پر ایک reverse proxy۔ Docker iptables کے ذریعے شائع کرتا ہے، تو ایک اتفاقی ports: لائن اُس UFW کے پیچھے بھی انٹرنیٹ سے قابلِ رسائی ہے جسے آپ بند سمجھتے تھے۔

کیا آپ شناخت یا کارڈ مانگتے ہیں؟

نہیں۔ سائن اپ کے لیے ایک ای میل، USDC یا USDT میں ادائیگی — کوئی دستاویزات نہیں، کوئی کارڈ نہیں۔ تقریباً ایک منٹ میں root۔

تبصرے

ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔

ایک تبصرہ چھوڑیں

تبصرے ظاہر ہونے سے پہلے moderate کیے جاتے ہیں۔