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.
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.
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.
web Frontemd Next.js A interface de usuário baseada em React servida como app Next.js. Comunica-se com o contêiner API.
db Banco de dados PostgreSQL Armazema todos os dados persistemtes: apps, conversas, metadados de datasets, usuários e chaves API.
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.
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.
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.
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
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 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.