Docker Compose beschrijft een multi-container-stack in één bestand en draait hem met één commando. Dit is de deploy-handleiding; installeer eerst Docker als je dat nog niet hebt gedaan. Voor een AI-agent-specifieke stack (agent + vector-DB + Redis) zie docker-compose voor AI-agents.
1. Een stack: app + database + 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: {} }
Secrets leven in .env, nooit in het compose-bestand:
# /opt/stack/.env (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string
Een minimale Caddyfile proxyt je domein naar de app en haalt zelf HTTPS op:
app.yourdomain.com {
reverse_proxy app:8080
}
2. Breng hem omhoog
cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app
restart: unless-stopped op elke service + Docker ingeschakeld bij het opstarten = de stack komt na een reboot vanzelf terug.
3. Dagelijkse commando's
docker compose pull && docker compose up -d # update images
docker compose down # stop the stack
docker compose restart app # restart one service
Het deel dat mensen fout doen: blootgestelde poorten
Docker publiceert poorten via iptables, dus een container met ports: ["5432:5432"] is vanaf internet bereikbaar, zelfs achter een UFW-firewall die je gesloten waande. Publiceer alleen het publieke toegangspunt (de proxy op 80/443); houd databases en caches op het compose-netwerk of gebonden aan 127.0.0.1. Alles dat webverkeer aanbiedt heeft een plan met dedicated IP nodig; combineer met een UFW-firewall.
Voor een hele stack achter één IP zie meerdere services zelf hosten. Root in ongeveer een minuut, NVMe, geen KYC, betalen in crypto.
Reacties
Nog geen reacties. Wees de eerste.