Dify本地部署经验,端口冲突解决,dify启动脚本
本文介绍了如何轻松安装和配置本地知识库工具Dify,以提升工作效率。首先,需要安装Docker、Docker Desktop和Git等依赖。接着,通过克隆Dify的GitHub仓库到本地,并使用Docker Compose启动服务。文章还提供了检查服务运行状态的方法,并解决了端口冲突的问题。最后,作者分享了一个简单的桌面启动脚本,简化了Dify的启动过程。整体而言,Dify的安装和配置过程相对简单
最近用智能体越来越多,发现本地知识库确实有很高的实用价值。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%"
祝大家部署顺利!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)