Docker vormt het fundament van de PMA infrastructuur. Dit document beschrijft de architectuur, conventions en best practices.
Alle PMA services draaien als Docker containers, georkestreerd via Docker Compose. Dit biedt:
Het hoofdbestand docker/docker-compose.yml definieert alle services:
version: "3.8"
networks:
asd-network:
name: asd-network
driver: bridge
volumes:
grafana-data:
n8n-data:
postgres-data:
services:
grafana:
image: grafana/grafana:latest
container_name: asd-grafana
profiles:
- grafana
networks:
- asd-network
volumes:
- grafana-data:/var/lib/grafana
ports:
- "3000:3000"
Profiles groeperen services en bepalen welke starten:
| Profile | Services | Gebruik |
|---|---|---|
core |
postgres, redis | Basis dependencies |
auth |
authentik | SSO/Identity |
monitoring |
grafana, loki | Observability |
development |
n8n, gitea | Development tools |
# Start specifiek profile
docker compose --profile monitoring up -d
# Of via just
just start grafana # Start automatisch grafana profile
Alle services communiceren via het gedeelde asd-network:
Services refereren elkaar via container name:
# n8n configuratie
DATABASE_URL: postgres://n8n:password@asd-postgres:5432/n8n
# Grafana datasource
url: http://asd-loki:3100
Belangrijk: Gebruik altijd container names, nooit
localhostvoor inter-service communicatie.
| Type | Pattern | Voorbeeld |
|---|---|---|
| Data volume | {service}-data |
grafana-data |
| Config volume | {service}-config |
nginx-config |
| Backup volume | {service}-backup |
postgres-backup |
| Tenant volume | {service}-{tenant} |
grafana-staging |
Volumes worden opgeslagen in:
/var/lib/docker/volumes/docker_{volume-name}/_data/
# Start
just start grafana
# Stop (behoudt container)
just stop grafana
# Restart
just restart grafana
# Status
just status grafana
# Logs
just logs grafana
# Volledig verwijderen
just uninstall grafana
Services definiëren health checks:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
Controleer health status:
just health grafana
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
read_only: trueprivileged: true