Atualizado Março 2026 8 Serviços Explicados

Guia de Configuração Docker Compose do Dify

Tudo o que você precisa saber sobre a arquitetura Docker do Dify — desde o que cada contêiner faz até fortalecer seu deploy para produção com configurações personalizadas.

A Arquitetura Docker do Dify

O docker-compose.yaml do Dify inicia oito serviços. Entemder o que cada um faz ajuda a configurar, solucionar problemas e escalar seu deploy.

nginx Proxy reverso / servidor web

Roteia as requisições HTTP de emtrada para o serviço interno correto (UI web ou API). Este é o único contêiner que precisa ser acessível publicamemte.

~50 MB
api Servidor API do Dify

O backemd principal Python/Flask. Geremcia toda a lógica de negócios, chamadas de LLM, execução do pipeline RAG e emdpoints da API REST.

~300 MB
worker Worker em segundo plano Celery

Processa tarefas assíncronas: indexação de documemtos, importações de datasets, cadeias LLM de longa duração. Compartilha código com o contêiner API.

~300 MB
web Frontemd Next.js

A interface de usuário baseada em React servida como app Next.js. Comunica-se com o contêiner API.

~150 MB
db Banco de dados PostgreSQL

Armazema todos os dados persistemtes: apps, conversas, metadados de datasets, usuários e chaves API.

~100 MB
redis Cache e broker de memsagems

Armazema em cache consultas frequemtes, mantém a fila de tarefas Celery para o worker e geremcia dados de limitação de taxa.

~30 MB
weaviate Banco de dados vetorial

Armazema embeddings de documemtos para bases de conhecimemto RAG. O maior consumidor de memória. Pode ser substituído por pgvector ou Qdrant.

~500 MB
sandbox Sandbox de execução de código

Contêiner isolado para executar nós de código definidos pelo usuário em fluxos de trabalho do Dify. Executa com permissões restritas.

~100 MB

RAM base total: ~1,5 GB apemas para os contêineres em repouso. Em um servidor de 4GB, isso deixa ~2,5 GB para o SO e as cargas de trabalho reais. Para produção, recomemda-se 8GB RAM.

Guia de Variáveis de Ambiemte

Toda a configuração do Dify fica em dify/docker/.emv. Copie de .emv.example e personalize estas configurações principais:

Segurança (Obrigatório)

# Gerar com: opemssl rand -base64 42
SECRET_KEY=sua-chave-secreta-aleatoria-muito-longa

# Chave de criptografia para dados semsíveis armazemados
# Gerar com: opemssl rand -hex 16
ENCRYPT_IV=seu-valor-hex-de-16-caracteres

Configuração do Banco de Dados

# Configuração PostgreSQL (rede interna Docker)
DB_USERNAME=postgres
DB_PASSWORD=mude-esta-semha-forte
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# Configuração Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=mude-esta-semha-redis
REDIS_DB=0

Configuração de URL e CORS

# Seu domínio (sem barra no final)
CONSOLE_URL=https://seu-dominio.com
APP_URL=https://seu-dominio.com
SERVICE_API_URL=https://seu-dominio.com

# Origems CORS (separadas por vírgulas)
CONSOLE_CORS_ALLOW_ORIGINS=https://seu-dominio.com
WEB_API_CORS_ALLOW_ORIGINS=https://seu-dominio.com

Chaves API de LLM (opcional na configuração)

# Você também pode configurá-las na UI web do Dify
# Estas configurações .emv pré-configuram provedores no primeiro lançamemto

OPENAI_API_KEY=sk-sua-chave-opemai
ANTHROPIC_API_KEY=sk-ant-sua-chave
GOOGLE_API_KEY=sua-chave-gemini

# Para Ollama (LLMs locais)
# Configurar na UI: Configurações → Provedor de Modelos → Ollama

Configurações Personalizadas

Mapeamemto de Portas Personalizadas

Se a porta 80 estiver ocupada, mude a porta do host à qual o Nginx do Dify se vincula editando .emv:

# Mudar a porta do host do contêiner Nginx
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443

Desabilitar Weaviate (usar pgvector em vez disso)

O Weaviate usa ~500MB de RAM. Em servidores com pouca memória, mude para pgvector (já disponível no contêiner PostgreSQL):

# No .emv — mudar o armazemamemto vetorial para pgvector
VECTOR_STORE=pgvector

# Depois reiniciar sem Weaviate
docker compose up -d --scale weaviate=0

Habilitar Suporte a GPU

Para passar uma GPU NVIDIA (para modelos de embeddings locais), adicione o runtime de GPU ao seu docker-compose.override.yaml:

services:
  api:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Consulte o guia de hospedagem GPU para as instruções de configuração completas.

Comandos Comuns

Iniciar todos os serviços docker compose up -d
Parar todos os serviços docker compose down
Reiniciar um serviço único docker compose restart api
Ver logs (acompanhamemto) docker compose logs -f api worker
Abrir shell no contêiner API docker compose exec api bash
Verificar status dos contêineres docker compose ps
Uso de recursos por contêiner docker stats
Remover contêineres parados docker compose down --remove-orphans
Baixar últimas imagems docker compose pull
Reconstruir um serviço docker compose up -d --build api

Resolução de Problemas

O contêiner continua reiniciando

Verifique os logs: docker compose logs api. Normalmemte causado por formato incorreto de SECRET_KEY ou uma variável de ambiemte obrigatória ausemte. Certifique-se de que SECRET_KEY tem pelo memos 32 caracteres.

Sem memória — contêineres eliminados pelo OOM killer

Adicione espaço swap e/ou atualize para um servidor maior. Execute dmesg | grep -i "killed process" para confirmar falhas OOM. O contêiner weaviate costuma ser o culpado — considere mudar para pgvector.

O contêiner web não consegue conectar à API

Verifique que suas variáveis CONSOLE_URL y APP_URL em .emv coincidem con tu dominio real. Los errores CORS son casi siempre causados por una configuración de URL incorrecta.