Docker Compose ባለብዙ-ኮንቴይነር ስታክን በአንድ ፋይል ይገልጻል እና በአንድ ትዕዛዝ ያሄደዋል። ይህ የማሰማራት how-to ነው፤ ካላደረግከው መጀመሪያ Docker ጫን። ለAI-ወኪል-ተኮር ስታክ (ወኪል + vector 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 ላይ proxy)፤ ዳታቤዞችንና cache-ን በcompose አውታረ መረብ ወይም ወደ 127.0.0.1 ታስረው አስቀምጥ። የድር ትራፊክ የሚያገለግል ማንኛውም ነገር የተወሰነ-IP እቅድ ያስፈልገዋል፤ ከUFW ፋየርዎል ጋር አጣምረው።
ከአንድ IP ጀርባ ላለ ሙሉ ስታክ ብዙ አገልግሎቶችን ራስ-ማስተናገድ ተመልከት። በአንድ ደቂቃ ገደማ root፣ NVMe፣ ያለ KYC፣ በክሪፕቶ የሚከፈል።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።