Bijgewerkt maart 2026 8 Services uitgelegd

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.

~50 MB
api Dify API-server

Het principale Python/Flask-backend. Verwerkt alle bedrijfslogica, LLM-aanroepen, RAG-pipeline-uitvoering en REST API-eindpunten.

~300 MB
worker Celery achtergrondwerker

Verwerkt asynchrone taken: document-indexering, dataset-imports, langlopende LLM-chains. Deelt code met de API-container.

~300 MB
web Next.js frontend

De op React gebaseerde gebruikersinterface geserveerd als Next.js-app. Communiceert met de API-container.

~150 MB
db PostgreSQL database

Slaat alle persistente gegevens op: apps, gesprekken, dataset-metadata, gebruikers en API-sleutels.

~100 MB
redis Cache en berichtenmakelaar

Slaat veelgebruikte queries in de cache op, bewaart de Celery-taakwachtrij voor de werker en verwerkt snelheidsbegrenzingsgegevens.

~30 MB
weaviate Vectordatabase

Slaat document-embeddings op voor RAG-kennisbanken. De grootste geheugenverbruiker. Kan worden vervangen door pgvector of Qdrant.

~500 MB
sandbox Code-uitvoeringsomgeving

Geïsoleerde container voor het uitvoeren van door gebruikers gedefinieerde code-knooppunten in Dify-workflows. Draait met beperkte rechten.

~100 MB

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

Alle services starten docker compose up -d
Alle services stoppen docker compose down
Enkele service herstarten docker compose restart api
Logboeken bekijken (volgend) docker compose logs -f api worker
Shell openen in API-container docker compose exec api bash
Containerstatus controleren docker compose ps
Resourcegebruik per container docker stats
Gestopte containers verwijderen docker compose down --remove-orphans
Nieuwste images downloaden docker compose pull
Een service herbouwen 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.