Docker Compose mendeskripsikan stack multi-kontainer dalam satu file dan menjalankannya dengan satu perintah. Ini panduan deploy-nya; pasang Docker dulu jika belum. Untuk stack khusus agen AI (agen + basis data vektor + Redis), lihat docker-compose untuk agen AI.
1. Sebuah stack: app + basis data + 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: {} }
Rahasia hidup di .env, jangan pernah di file compose:
# /opt/stack/.env (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string
Caddyfile minimal mem-proxy domainmu ke app dan mengambil HTTPS sendiri:
app.yourdomain.com {
reverse_proxy app:8080
}
2. Jalankan
cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app
restart: unless-stopped di tiap layanan + Docker aktif saat boot = stack kembali sendiri setelah reboot.
3. Perintah sehari-hari
docker compose pull && docker compose up -d # update images
docker compose down # stop the stack
docker compose restart app # restart one service
Bagian yang sering salah: port yang terekspos
Docker mempublikasikan port lewat iptables, jadi kontainer dengan ports: ["5432:5432"] bisa dijangkau dari internet bahkan di balik firewall UFW yang kamu kira tertutup. Publikasikan hanya titik masuk publik (proxy di 80/443); jaga basis data dan cache di jaringan compose atau terikat ke 127.0.0.1. Apa pun yang melayani trafik web butuh paket IP khusus; pasangkan dengan firewall UFW.
Untuk seluruh stack di balik satu IP, lihat swakelola beberapa layanan. Root dalam sekitar semenit, NVMe, tanpa KYC, bayar dengan kripto.
Komentar
Belum ada komentar. Jadilah yang pertama.