Docker Compose çok konteynerli bir yığını tek bir dosyada tanımlar ve tek bir komutla çalıştırır. Bu, dağıtım rehberidir; henüz yapmadıysan önce Docker'ı kur. Yapay zekâ ajanına özgü bir yığın (ajan + vektör DB + Redis) için yapay zekâ ajanları için docker-compose yazısına bak.
1. Bir yığın: uygulama + veritabanı + ters 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: {} }
Sırlar .env'de yaşar, asla compose dosyasında değil:
# /opt/stack/.env (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string
Minimal bir Caddyfile alan adını uygulamaya proxy'ler ve HTTPS'i kendisi alır:
app.yourdomain.com {
reverse_proxy app:8080
}
2. Ayağa kaldır
cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app
Her hizmette restart: unless-stopped + açılışta etkin Docker = yığın yeniden başlatmadan sonra kendi kendine geri gelir.
3. Günlük komutlar
docker compose pull && docker compose up -d # update images
docker compose down # stop the stack
docker compose restart app # restart one service
İnsanların yanlış yaptığı kısım: açık portlar
Docker portları iptables üzerinden yayınlar, bu yüzden ports: ["5432:5432"] olan bir konteyner, kapalı sandığın bir UFW güvenlik duvarının arkasında bile internetten erişilebilir. Yalnızca genel giriş noktasını yayınla (80/443'teki proxy); veritabanlarını ve önbellekleri compose ağında ya da 127.0.0.1'e bağlı tut. Web trafiği sunan her şey bir ayrılmış IP planı ister; bir UFW güvenlik duvarıyla eşleştir.
Tek bir IP'nin arkasında bütün bir yığın için birden çok hizmeti kendin barındır yazısına bak. Yaklaşık bir dakikada root, NVMe, KYC yok, kripto ile ödeme.
Yorumlar
Henüz yorum yok. İlk olun.