文章目录

    • 简介
    • Docker Compose部署步骤
    • 访问Dify
    • 更新Dify
    • 自定义配置
    • 安装过程中遇到的问题及解决方法

1、简介

        openAI 的 GPT 大模型的发展历程。在人工智能飞速发展的今天,大型语言模型(LLM)的应用日益普及。然而,对于许多开发者和企业而言,如何高效、灵活地构建和管理基于LLM的应用仍然是一个挑战。Dify作为一个开源的LLM应用开发平台,提供了从Agentic 工作流、RAG(检索增强生成)管道到模型管理和可观测性等一站式能力,极大地简化了AI应用的开发流程。为了满足数据安全、隐私保护或特定环境的需求,许多用户选择将Dify进行本地化部署。本文将详细介绍Dify的本地化部署过程,包括环境准备、Docker Compose部署步骤、配置说明以及常见问题,旨在帮助读者从零开始,轻松搭建属于自己的AI应用开发平台。

版权声明:本文为CSDN博主「喵叔哟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gangzhucoll/article/details/149772959

2、Docker Compose 部署步骤

Dify官方推荐使用Docker Compose进行本地化部署,这是一种高效且便捷的方式,能够快速搭建Dify及其所有依赖服务。以下是详细的部署步骤:

2.1 克隆 Dify 代码仓库

首先,您需要从GitHub上克隆Dify的源代码仓库到本地环境。请确保您已安装Git。

git clone https://github.com/langgenius/dify.git --branch 0.15.3 # 假设当前最新版本为 0.15.3,请根据实际情况调整版本号

注意:在执行克隆命令时,建议指定一个稳定的版本号(例如--branch 0.15.3),以避免因版本更新导致的不兼容问题。您可以在Dify的GitHub Release页面查看最新的稳定版本。

2.2 进入 Docker 目录

克隆完成后,进入Dify源代码中的docker目录。所有与Docker Compose部署相关的配置文件都位于此目录中。

cd dify/docker
2.3 复制环境配置文件

Dify使用.env文件来管理环境变量。在docker目录下,有一个.env.example文件,其中包含了所有必要的环境变量及其默认值。您需要将其复制一份并命名为.env

cp .env.example .env
2.4 启动 Docker 容器

dify/docker目录下,根据您系统上安装的Docker Compose版本,选择合适的命令来启动Dify服务。您可以通过运行docker compose version命令来检查您的Docker Compose版本。

docker compose up -d

-d参数表示在后台运行容器,这样您就可以在终端中继续执行其他操作。执行此命令后,Docker Compose将下载所需的镜像(如果本地不存在),并启动Dify的所有服务,包括api、worker、web以及weaviate、db、redis、nginx、ssrf_proxy、sandbox等基础组件。

2.5 检查容器状态

启动命令执行完毕后,您可以通过以下命令检查所有Dify容器的运行状态,确保它们都已正常启动:

docker compose ps

您应该会看到类似以下的输出,所有服务的STATUS都应显示为Up

NAME                     IMAGE                                       COMMAND                   SERVICE         CREATED             STATUS                       PORTS
docker-api-1             langgenius/dify-api:1.14.2                  "/bin/bash /entrypoi…"   api             About an hour ago   Up About an hour (healthy)   5001/tcp
docker-api_websocket-1   langgenius/dify-api:1.14.2                  "/bin/bash /entrypoi…"   api_websocket   About an hour ago   Up About an hour             5001/tcp
docker-db_postgres-1     postgres:15-alpine                          "docker-entrypoint.s…"   db_postgres     About an hour ago   Up About an hour (healthy)   5432/tcp
docker-nginx-1           nginx:latest                                "sh -c 'cp /docker-e…"   nginx           About an hour ago   Up About an hour             0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8081->80/tcp, :::8081->80/tcp
docker-plugin_daemon-1   langgenius/dify-plugin-daemon:0.6.1-local   "/usr/bin/tini -g --…"   plugin_daemon   About an hour ago   Up About an hour             0.0.0.0:5003->5003/tcp, :::5003->5003/tcp
docker-redis-1           redis:6-alpine                              "docker-entrypoint.s…"   redis           About an hour ago   Up About an hour (healthy)   6379/tcp
docker-sandbox-1         langgenius/dify-sandbox:0.2.15              "/entrypoint.sh"          sandbox         About an hour ago   Up About an hour (healthy)   
docker-ssrf_proxy-1      ubuntu/squid:latest                         "sh -c 'cp /docker-e…"   ssrf_proxy      About an hour ago   Up About an hour             3128/tcp
docker-weaviate-1        semitechnologies/weaviate:1.27.0            "/bin/weaviate --hos…"   weaviate        About an hour ago   Up About an hour             
docker-web-1             langgenius/dify-web:1.14.2                  "/bin/sh ./entrypoin…"   web             About an hour ago   Up About an hour             3000/tcp
docker-worker-1          langgenius/dify-api:1.14.2                  "/bin/bash /entrypoi…"   worker          About an hour ago   Up About an hour             5001/tcp
docker-worker_beat-1     langgenius/dify-api:1.14.2                  "/bin/bash /entrypoi…"   worker_beat     About an hour ago   Up About an hour             5001/tcp

3. 访问 Dify

Dify服务启动后,您可以通过浏览器访问其Web界面。首次访问时,您需要设置管理员账户。

3.1 管理员初始化页面

在本地环境中,打开浏览器并访问以下地址进行管理员账户设置:

http://localhost/install

如果您是在服务器环境中部署,请将localhost替换为您的服务器IP地址:

http://your_server_ip/install
3.2 Dify 主页面

完成管理员账户设置后,您可以访问Dify的主页面:

http://localhost
http://your_server_ip

4. 更新 Dify

随着Dify的不断发展,新版本会带来更多功能和性能优化。定期更新Dify是保持平台最新状态的重要环节。以下是更新Dify的步骤:

进入Dify源代码的docker目录,并按顺序执行以下命令:

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

命令说明:

cd dify/docker: 进入Dify的Docker部署目录。
docker compose down: 停止并移除当前正在运行的Dify容器及其网络。这会确保在更新过程中不会有旧的进程干扰。
git pull origin main: 从GitHub仓库拉取最新的Dify源代码。这会将您的本地代码库更新到最新版本。
docker compose pull: 拉取所有Dify服务所需的最新Docker镜像。这会确保您使用的是最新版本的容器镜像。
docker compose up -d: 重新启动Dify服务,使用最新的代码和镜像。


4.1 同步环境变量配置 (重要!)


       在更新Dify时,一个非常重要的步骤是同步环境变量配置。Dify的.env.example文件可能会随着新版本而更新,引入新的配置项或修改现有配置。因此,您需要:

        检查 .env.example 文件:在每次更新后,对比新的.env.example文件与您本地的.env文件,查看是否有新增或修改的配置项。
        同步修改 .env 文件:将.env.example中新增的变量添加到您的.env文件中,并根据需要更新已更改的任何值。例如,如果新版本引入了新的API密钥配置,您需要将其添加到您的.env文件中并填入相应的值。
        建议:在更新前,可以备份您当前的.env文件,以防万一。同时,使用版本控制工具(如Git)管理您的.env文件(但请注意不要将敏感信息直接提交到公共仓库),可以更方便地追踪和合并配置变更。

5. 自定义配置

       Dify的.env文件包含了许多可配置的环境变量,允许您根据自己的需求调整Dify的行为,例如数据库连接、存储配置、LLM提供商API密钥等。要自定义Dify的配置,您只需编辑dify/docker/.env文件中的相应环境变量值。

       完整的环境变量集合可以在dify/docker/.env.example中找到。在修改.env文件后,您需要重新启动Dify服务以使更改生效:

docker compose down
docker compose up -d

常见自定义配置项示例:

        数据库配置:如果您希望使用外部数据库而不是Dify默认的PostgreSQL容器,可以在.env文件中修改数据库连接字符串。
        存储配置:Dify支持多种存储后端,如S3兼容存储。您可以在.env中配置存储类型和凭证。
        LLM提供商:Dify允许您集成不同的LLM提供商。您可以在.env中配置OpenAI、Anthropic等LLM的API密钥和模型名称。
        端口映射:如果您希望Dify的Web界面通过不同的端口访问,可以修改docker-compose.yaml文件中的端口映射(但通常不建议直接修改此文件,除非您非常清楚其影响)。
在进行任何自定义配置之前,强烈建议仔细阅读.env.example文件中的注释,了解每个变量的含义和作用。

6. 安装过程中遇到的问题及解决方法

         6.1 Permission denied: '/home/dify'”

      在正在运行的 dify-api-1容器里,以 root 身份创建一个 /home/dify目录,并把它的所有者改成 UID/GID 为 1001 的用户,同时设置目录权限为 755。

docker exec -it -u root docker-api-1 bash -c “mkdir -p /home/dify && chown 1001:1001 /home/dify && chmod 775 /home/dify”

     验证目录权限分配是否成功
 

docker exec docker-api-1 ls -ld /home/dify

         6.2 无法打开dify主页

         配置环境变量,配置.env文件,注意,务必要配置宿主机的IP地址,不能用localhost,不能写127.0.0.1,无需配置API、web容器的IP。

        可使用以下指令进行测试,确认API服务是否在运行,404/502考虑是nginx代理问题,

curl http://宿主机:端口/console/api/system-features

        用centos8的fox的浏览器无法打开,更windows edge可顺利打开。

CONSOLE_API_URL=http://192.168.192.130:8081
CONSOLE_WEB_URL=http://192.168.192.130:8081
SERVICE_API_URL=http://192.168.192.130:8081
TRIGGER_URL=http://localhost
APP_API_URL=http://192.168.192.130:8081
APP_WEB_URL=http://192.168.192.130:8081

结论
         通过本文的详细指导,您应该已经成功地在本地环境中部署了Dify平台。Dify的本地化部署为您提供了一个强大、灵活且可控的AI应用开发环境,无论是进行原型开发、数据安全敏感型项目,还是构建私有化的AI解决方案,都将是您的理想选择。掌握Dify的部署、更新和配置,将使您能够充分利用其Agentic工作流、RAG管道等先进功能,高效地构建和管理您的LLM应用。随着AI技术的不断演进,Dify将持续为开发者提供更便捷、更强大的工具,助力您在人工智能领域取得更大的成就。
 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐