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 نہیں، کرپٹو میں ادائیگی۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔