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.