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.docker
em particular aquele em que ovolumes
Subdiretó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 doDify
código-fonte, usando o novodocker
O 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.env
para migrar a configuração personalizada para o novo arquivo.env
Documentaçã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árioalpine
monte 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)backup
do diretóriooradata.tar.gz
responder cantandoes_data.tar.gz
Transferê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_data
Esse comando gera a saída do volume
Mountpoint
ou 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 save
para 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 load
comando de.tar
para 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 cookie
que 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 alpine Ele 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. |