最近用智能体越来越多,发现本地知识库确实有很高的实用价值。Dify作为本地知识库安装下来总体比较轻松(相较于fastgpt),基本上没有什么门槛,基本上很快可以搞定,能大大提升工作效率。

1.前置工作

首先需要安装需要的依赖:

docker,dockerdesktop,git

docker和docker compose验证方法如下

docker -v
docker compose version

有显示版本信息就是正确的

2.克隆dify到本地
git clone https://github.com/langgenius/dify.git
3.拉取容器,启用
cd dify/docker
copy .env.example .env
#如果是docker compose V1则写法为docker-compose
#检查dockercompose版本方法:
#$docker compose version
docker compose up -d
4.检查是否安装后正常运行
docker compose ps

包括3个业务服务api / worker / web,包括6个基础组件weaviate / db / redis / nginx / ssrf_proxy / sandbox

NAME                  IMAGE                              COMMAND                   SERVICE      CREATED              STATUS                        PORTS
docker-api-1          langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   api          About a minute ago   Up About a minute             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           About a minute ago   Up About a minute (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "sh -c 'cp /docker-e…"   nginx        About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        About a minute ago   Up About a minute (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                   sandbox      About a minute ago   Up About a minute             
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   About a minute ago   Up About a minute             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     About a minute ago   Up About a minute             
docker-web-1          langgenius/dify-web:0.6.13         "/bin/sh ./entrypoin…"   web          About a minute ago   Up About a minute             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   
端口冲突解决方法:

在安装的过程中遇到的唯一一个问题就是端口冲突。因为之前80端口已经使用了,所以现在需要手动修改端口。其实也很简单,只需要修改.env文件即可

[+] Running 9/10
 ✔ Container docker-web-1            Running                                                                                                                                       0.0s
 ✔ Container docker-redis-1          Running                                                                                                                                       0.0s
 ✔ Container docker-ssrf_proxy-1     Running                                                                                                                                       0.0s
 ✔ Container docker-sandbox-1        Running                                                                                                                                       0.0s
 ✔ Container docker-weaviate-1       Running                                                                                                                                       0.0s
 ✔ Container docker-db-1             Healthy                                                                                                                                      11.1s
 ✔ Container docker-plugin_daemon-1  Started                                                                                                                                      11.4s
 ✔ Container docker-worker-1         Started                                                                                                                                      11.4s
 - Container docker-nginx-1          Starting                                                                                                                                     11.5s
 ✔ Container docker-api-1            Started                                                                                                                                      11.5s
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 127.0.0.1:0: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

修改.env文件

EXPOSE_NGINX_PORT=83
#原来是80,但是端口被占用了

修改后重新运行docker compose up -d

启动器脚本

最后写了一个简单的桌面启动脚本,直接一键打开dify。如果是手动的话,每次开机需要打开dockers desktop再运行命令,总感觉很麻烦。

@echo off
chcp 65001 >nul
set "url=http://127.0.0.1:83/"
set "projectdir=C:\Users\ASUS\mywork\mydify\dify\docker"
set "dockerdesktop=C:\Program Files\Docker\Docker\Docker Desktop.exe"

echo 启动 Docker Desktop...
start "" "%dockerdesktop%"
echo 等待 10 秒让 Docker 启动...
echo %dockerdesktop%
timeout /t 10 /nobreak >nul




echo 切换目录:%projectdir%
cd /d "%projectdir%"
echo 正在启动DIFY
docker compose up -d

echo 等待5秒后启动
timeout /t 5 /nobreak >nul

start "" "%url%"

祝大家部署顺利!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐