Dify Docker Compose Installatiegids
Alles wat je moet weten over de Docker-architectuur van Dify — van wat elke container doet tot het verharden van je implementatie voor productie met aangepaste configuraties.
De Docker-architectuur van Dify
De docker-compose.yaml van Dify start acht services. Begrijpen wat elke service doet helpt je bij het configureren, oplossen van problemen en schalen van je implementatie.
nginx Reverse proxy / webserver Routeert inkomende HTTP-verzoeken naar de juiste interne service (web-UI of API). Dit is de enige container die publiek toegankelijk moet zijn.
api Dify API-server Het principale Python/Flask-backend. Verwerkt alle bedrijfslogica, LLM-aanroepen, RAG-pipeline-uitvoering en REST API-eindpunten.
worker Celery achtergrondwerker Verwerkt asynchrone taken: document-indexering, dataset-imports, langlopende LLM-chains. Deelt code met de API-container.
web Next.js frontend De op React gebaseerde gebruikersinterface geserveerd als Next.js-app. Communiceert met de API-container.
db PostgreSQL database Slaat alle persistente gegevens op: apps, gesprekken, dataset-metadata, gebruikers en API-sleutels.
redis Cache en berichtenmakelaar Slaat veelgebruikte queries in de cache op, bewaart de Celery-taakwachtrij voor de werker en verwerkt snelheidsbegrenzingsgegevens.
weaviate Vectordatabase Slaat document-embeddings op voor RAG-kennisbanken. De grootste geheugenverbruiker. Kan worden vervangen door pgvector of Qdrant.
sandbox Code-uitvoeringsomgeving Geïsoleerde container voor het uitvoeren van door gebruikers gedefinieerde code-knooppunten in Dify-workflows. Draait met beperkte rechten.
Totaal basis-RAM: ~1,5 GB alleen voor de containers in rust. Op een server met 4 GB laat dit ~2,5 GB over voor het besturingssysteem en de werkelijke workloads. Voor productie wordt 8 GB RAM aanbevolen.
Gids voor omgevingsvariabelen
Alle configuratie van Dify bevindt zich in dify/docker/.env. Kopieer vanuit .env.example en pas deze sleutelinstellingen aan:
Beveiliging (Verplicht)
# Genereer met: openssl rand -base64 42
SECRET_KEY=jouw-willekeurige-zeer-lange-geheime-sleutel
# Versleutelingssleutel voor opgeslagen gevoelige gegevens
# Genereer met: openssl rand -hex 16
ENCRYPT_IV=jouw-16-tekens-hex-waarde Databaseconfiguratie
# PostgreSQL-configuratie (intern Docker-netwerk)
DB_USERNAME=postgres
DB_PASSWORD=verander-dit-sterke-wachtwoord
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
# Redis-configuratie
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=verander-dit-redis-wachtwoord
REDIS_DB=0 URL- en CORS-configuratie
# Jouw domein (zonder afsluitende slash)
CONSOLE_URL=https://jouw-domein.com
APP_URL=https://jouw-domein.com
SERVICE_API_URL=https://jouw-domein.com
# CORS-origins (kommagescheiden)
CONSOLE_CORS_ALLOW_ORIGINS=https://jouw-domein.com
WEB_API_CORS_ALLOW_ORIGINS=https://jouw-domein.com LLM API-sleutels (optioneel bij installatie)
# Je kunt deze ook instellen in de Dify web-UI
# Deze .env-instellingen configureren providers bij de eerste start
OPENAI_API_KEY=sk-jouw-openai-sleutel
ANTHROPIC_API_KEY=sk-ant-jouw-sleutel
GOOGLE_API_KEY=jouw-gemini-sleutel
# Voor Ollama (lokale LLM's)
# Instellen in UI: Instellingen → Modelprovider → Ollama Aangepaste configuraties
Aangepaste poorttoewijzing
Als poort 80 bezet is, verander dan de hostpoort waaraan Dify's Nginx gebonden is door .env te bewerken:
# Hostpoort van de Nginx-container wijzigen
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443 Weaviate uitschakelen (pgvector gebruiken)
Weaviate gebruikt ~500 MB RAM. Op servers met weinig geheugen kun je overschakelen naar pgvector (al beschikbaar in de PostgreSQL-container):
# In .env — vectoropslag wijzigen naar pgvector
VECTOR_STORE=pgvector
# Vervolgens herstarten zonder Weaviate
docker compose up -d --scale weaviate=0 GPU-ondersteuning inschakelen
Om een NVIDIA GPU door te sturen (voor lokale embedding-modellen), voeg de GPU-runtime toe aan je docker-compose.override.yaml:
services:
api:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu] Bekijk de GPU-hostinggids voor de volledige installatie-instructies.
Veelgebruikte commando's
docker compose up -d docker compose down docker compose restart api docker compose logs -f api worker docker compose exec api bash docker compose ps docker stats docker compose down --remove-orphans docker compose pull docker compose up -d --build api Probleemoplossing
Container blijft herstarten
Controleer de logboeken: docker compose logs api. Meestal veroorzaakt door een onjuist opgemaakte SECRET_KEY of een ontbrekende vereiste omgevingsvariabele. Zorg dat SECRET_KEY minimaal 32 tekens heeft.
Onvoldoende geheugen — containers gestopt door OOM killer
Voeg swapruimte toe en/of upgrade naar een grotere server. Voer dmesg | grep -i "killed process" uit om OOM-fouten te bevestigen. De weaviate-container is meestal de boosdoener — overweeg over te schakelen naar pgvector.
Web-container kan geen verbinding maken met de API
Controleer of je CONSOLE_URL- en APP_URL-variabelen in .env overeenkomen met je werkelijke domein. CORS-fouten worden bijna altijd veroorzaakt door een onjuiste URL-configuratie.
Veelvoorkomende Fouten en Hoe Ze Te Vermijden
1. Verkeerde poortconfiguratie
Een veelvoorkomende fout is het niet correct instellen van poorten in de docker-compose.yaml. Dit leidt vaak tot de foutmelding Connection refused.
Controleer of de poorten in de services sectie overeenkomen met de poorten die je in je browser probeert te bereiken. Bijvoorbeeld, als je Dify op poort 8080 wilt draaien, zorg ervoor dat je de volgende regel hebt:
ports:
- "8080:80" 2. Onjuiste omgevingsvariabelen
Vergeten omgevingsvariabelen of onjuiste waarden kunnen leiden tot runtime-fouten. Een veel voorkomende fout is het niet instellen van DB_PASSWORD.
Controleer je .env bestand en zorg ervoor dat alle vereiste variabelen correct zijn ingevuld. Bijvoorbeeld:
DB_PASSWORD=sterk-wachtwoord 3. Onvoldoende systeemresources
Bij het draaien van Dify op een server met minder dan 4 GB RAM krijg je mogelijk de foutmelding Out of memory.
Zorg ervoor dat je server voldoende RAM heeft. Voor productie is minimaal 8 GB RAM aanbevolen.
4. Geen toegang tot de database
Als je geen verbinding kunt maken met de database, krijg je vaak de melding could not connect to server.
Controleer of de DB_HOST en DB_PORT correct zijn ingesteld in je .env bestand. Standaard zijn deze:
DB_HOST=db
DB_PORT=5432 Geavanceerde Configuratie
1. Schalen van services
Om de prestaties te verbeteren, kun je het aantal replicas van een service verhogen. Dit doe je door de deploy sectie aan te passen:
api:
deploy:
replicas: 3 2. Gebruik van een reverse proxy
Het instellen van een reverse proxy kan de betrouwbaarheid verhogen. Voeg Nginx toe aan je docker-compose.yaml:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf 3. Verbeteren van logging
Stel een logging driver in voor betere foutopsporing:
api:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"