Docker Compose एक मल्टी-कंटेनर स्टैक को एक फ़ाइल में वर्णित करता है और एक कमांड से चलाता है। यह डिप्लॉय हाउ-टू है; यदि नहीं किया तो पहले Docker इंस्टॉल करें। AI-एजेंट-विशिष्ट स्टैक (एजेंट + वेक्टर DB + Redis) के लिए देखें AI एजेंट के लिए docker-compose।
1. एक स्टैक: ऐप + डेटाबेस + रिवर्स प्रॉक्सी
# /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 नहीं, क्रिप्टो में भुगतान।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।