Este artigo detalhará como usar o Docker responder cantando Docker Compose para implementar, atualizar e migrar plataformas de desenvolvimento de aplicativos LLM de código aberto Dify (v0.6.14). O conteúdo abrange operações avançadas, desde a implementação rápida até o backup de dados e a criação de imagens a partir do código-fonte, com o objetivo de fornecer um guia de operação claro e prático para desenvolvedores e equipe de O&M.
Implantação rápida da Dify com o Docker Compose
Para a maioria dos usuários, usar o Docker Compose A documentação é implementada Dify A maneira mais rápida e recomendada.
Etapa 1: Obter o arquivo de implantação do Dify
Em primeiro lugar, de Dify Obtenha o repositório oficial do docker Catálogo de implantação.
Etapa 2: Configurar as variáveis de ambiente
Dify de todas as configurações são gerenciados por meio de variáveis de ambiente. Antes da implementação, o arquivo de modelo de configuração .env.example replicar .env e, em seguida, modifique-o para atender às suas necessidades reais.
# 进入 docker 部署目录
cd dify/docker
# 复制环境变量配置文件
cp .env.example .env
Em seguida, você pode usar um editor de texto para abrir o arquivo .env altere a senha do banco de dados de acordo com os comentários contidos no arquivo,SECRET_KEY e outras configurações importantes.
Etapa 3: Iniciar o serviço
Após concluir a configuração, execute o seguinte comando para iniciar em segundo plano Dify de todos os serviços.
docker-compose up -d
Esse comando extrai automaticamente os Docker e inicie todos os contêineres em ordem.
Atualização dos serviços da Dify
(col.) reprovar (um aluno) Dify Ao lançar uma nova versão, você pode seguir as etapas abaixo para realizar uma atualização de segurança.
- Pare e remova os contêineres antigos:
cd dify/docker docker-compose down - Dados de backup (importante):
É altamente recomendável que você faça um backup antes de realizar qualquer atualização.dockerem particular aquele em que ovolumesSubdiretórios. Essa é a chave para garantir a segurança dos dados. - Obter a nova versão do documento:
Faça o download ou obtenha a versão mais recente doDifycódigo-fonte, usando o novodockerO catálogo substitui o antigo. - Importação de uma nova versão da imagem:
Se você estiver em um ambiente off-line, precisará importar a nova versão do arquivo de imagem com antecedência. - Atualização de arquivos de configuração:
Comparar o antigo com o novo.envpara migrar a configuração personalizada para o novo arquivo.envDocumentação. - Lançamento da nova versão do serviço:
docker-compose up -d
Migração e backup de dados
A migração de dados é um requisito comum em operações e manutenção.Dify A persistência de dados é realizada usando duas abordagens: mapeamento de diretório local e o Docker Nomeie os volumes de dados para que eles sejam migrados de forma diferente.
Migrar diretórios de volume que são mapeados localmente
Dify (usado em uma expressão nominal) docker-compose.yaml Na documentação, alguns serviços mantêm os dados por meio de "mapeamento de diretório local". Isso significa que um diretório no contêiner corresponde diretamente a um diretório no diretório ./volumes Catálogo.

A migração dessa forma é muito simples e consiste basicamente em copiar arquivos.
- Interromper o serviço Dify
Todos os contêineres devem ser interrompidos antes de manipular o arquivo para evitar conflitos de gravação de dados.docker-compose down - Catálogo de volumes embalados
comandante-em-chefe (militar)volumesé compactado em um arquivo zip.tar -czvf dify-volumes.tar.gz ./volumes - Descompactar em um novo servidor
Depois de transferir o zip para o local de destino no novo servidor, descompacte-o.tar -xzvf dify-volumes.tar.gz
Migração de volumes de dados nomeados pelo Docker
com relação a PostgreSQL e outros serviços importantes.Dify adotado Docker Os dados são mantidos em um "volume de dados nomeado". Esse volume consiste em Docker Gerenciamento unificado, cujos arquivos físicos são armazenados no /var/lib/docker/volumes/ a cópia direta é relativamente complicada e pode ter problemas de permissão.

para oradata responder cantando dify_es01_data Esses dois volumes de dados são usados como exemplo, e o método de migração recomendado é o seguinte.
instruções:: Se implantado com docker-compose -p dify Especifique o nome do projeto.Docker Um prefixo é adicionado automaticamente ao nome do volume, por exemplo dify_oradata.
Método 1: fazer backup e restaurar usando contêineres temporários (recomendado)
Esse método não requer root e não há necessidade de se preocupar com o caminho físico específico do volume no host, é uma prática segura e padronizada.
- Volumes de dados de backup
Crie um arquivo temporárioalpinemonte o volume de dados do qual será feito o backup e um diretório de backup local e, em seguida, execute o comando pack dentro do contêiner.# 确保当前目录下有 backup 子目录 mkdir -p backup # 备份 oradata 数据卷 docker run --rm -v oradata:/source -v $(pwd)/backup:/backup alpine sh -c "cd /source && tar czf /backup/oradata.tar.gz ." # 备份 dify_es01_data 数据卷 docker run --rm -v dify_es01_data:/source -v $(pwd)/backup:/backup alpine sh -c "cd /source && tar czf /backup/es_data.tar.gz ." - Transferência de arquivos de backup
comandante-em-chefe (militar)backupdo diretóriooradata.tar.gzresponder cantandoes_data.tar.gzTransferência de arquivos para o novo servidor. - Recuperação de dados em um novo servidor
Primeiro, crie um volume de dados com o mesmo nome no novo servidor e, em seguida, restaure os dados para ele de maneira semelhante.# 在新服务器上创建空的命名数据卷 docker volume create oradata docker volume create dify_es01_data # 从备份文件恢复数据到 oradata 卷 docker run --rm -v oradata:/target -v /path/to/backup:/backup alpine sh -c "cd /target && tar xzf /backup/oradata.tar.gz" # 从备份文件恢复数据到 dify_es01_data 卷 docker run --rm -v dify_es01_data:/target -v /path/to/backup:/backup alpine sh -c "cd /target && tar xzf /backup/es_data.tar.gz"
Método 2: Manipular diretamente o diretório do volume do host (requer privilégios de root)
Se o servidor que possui o root você também pode fazer o backup do diretório físico do volume diretamente.
- Encontrar o caminho físico para um volume
docker volume inspect oradata dify_es01_dataEsse comando gera a saída do volume
Mountpointou seja, o caminho de armazenamento físico. - Embalagem direta
# 获取路径并打包 ORADATA_PATH=$(docker volume inspect -f '{{.Mountpoint}}' oradata) ES_DATA_PATH=$(docker volume inspect -f '{{.Mountpoint}}' dify_es01_data) sudo tar -czf oradata_backup.tar.gz -C $ORADATA_PATH . sudo tar -czf es_data_backup.tar.gz -C $ES_DATA_PATH .
Operações avançadas: criação e gerenciamento de imagens a partir da origem
Em cenários em que o desenvolvimento secundário é necessário, patches de segurança são aplicados ou implementações off-line são feitas, são necessárias compilações manuais a partir da fonte Dify (usado em uma expressão nominal) Docker Espelhamento.
Criação de APIs e espelhos da Web
Dify Os serviços principais são divididos em api responder cantando web Duas partes que precisam ser construídas separadamente.
- Crie a imagem da API (
dify/dify-api)cd api && docker build . -t dify/dify-api:0.6.14 - Criar uma imagem da Web (
dify/dify-web)cd web && docker build . -t dify/dify-web:0.6.14
Exportação e importação de imagens (para ambientes off-line)
Depois de criar ou extrair uma imagem, ela pode ser exportada como uma .tar para importação para uso em servidores que não têm acesso a uma rede externa.
- Exportação de espelhos
fazer uso dedocker savepara empacotar uma ou mais imagens.# 导出 Dify 核心镜像 docker save -o dify_dify_api_0.6.14.tar dify/dify-api:0.6.14 docker save -o dify_dify_web_0.6.14.tar dify/dify-web:0.6.14 # 导出其它依赖镜像 docker save -o postgres_15_alpine.tar postgres:15-alpine docker save -o redis_6_alpine.tar redis:6-alpine - Importação de imagens
No novo servidor, use o comandodocker loadcomando de.tarpara carregar a imagem.docker load -i dify_dify_api_0.6.14.tar docker load -i dify_dify_web_0.6.14.tar docker load -i postgres_15_alpine.tar docker load -i redis_6_alpine.tar
Análise dos principais conceitos
A compreensão dos conceitos-chave a seguir ajudará a manter e usar melhor o Dify.
docker junto com docker-legacy diretório (no disco rígido do computador)
existir Dify Há dois diretórios de implantação no código-fonte.docker-legacy é o método de implantação antigo, e o docker O catálogo é a opção de implementação recomendada e mais estruturada atualmente. Os novos usuários devem sempre optar por usar o docker Catálogo.

SECRET_KEY papel de
existir dify-api atendidos .env arquivo de configuração.SECRET_KEY é uma configuração de segurança essencial. É uma cadeia longa e aleatória usada para criptografar e emitir a sessão de um usuário cookieque impede que a sessão seja adulterada. Certifique-se de definir esse valor como um valor complexo que ninguém possa adivinhar.

Ignorado no momento da construção storage diretório (no disco rígido do computador)
Dify (usado em uma expressão nominal) Dockerfile Quando a imagem é criada, ela é passada pelo .dockerignore Documentação explicitamente ignorada storage Catálogo. Isso se deve ao fato de que storage é usado para armazenar arquivos carregados pelo locatário, pares de chaves e outras informações confidenciais ou privadas, que não devem ser empacotadas em um diretório genérico Docker na imagem e, em vez disso, deve ser montado dinamicamente em tempo de execução por meio de um volume de dados.

analisar docker run --rm Comando de backup
O modelo de comando de backup recomendado na seção Migração de dados tem os seguintes significados para cada parâmetro:
docker run --rm -v <volume_to_backup>:/source -v <host_backup_dir>:/backup <image> sh -c "<commands>"
| montagens | Significado e uso |
|---|---|
docker run |
Inicie um novo contêiner. |
--rm |
Os contêineres são excluídos automaticamente após a execução, o que é ideal para realizar tarefas únicas e evitar deixar para trás contêineres temporários inúteis. |
-v :/source |
Fazer backup do Docker O volume de dados é montado no contêiner dentro do /source Catálogo. |
-v :/backup |
Monte o diretório na máquina host que é usado para armazenar os arquivos de backup no diretório /backup Catálogo. |
| “ | Especifique uma imagem de base leve, como alpineEle tem um tar e outras ferramentas comuns. |
sh -c "..." |
executado dentro do contêiner shell comando. Por exemplo cd /source && tar czf /backup/backup.tar.gz . Indica a entrada no diretório de dados de origem e, em seguida, o empacotamento de todo o seu conteúdo no diretório de backup. |





































