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.

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"