0%

dify docker安装配置

1
2
3
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

docker/nginx/ssl/ 放入你自己的域名证书

1
2
dify.crt
dify.key

.env开启https

1
2
NGINX_HTTPS_ENABLED=true
TOP_K_MAX_VALUE=30 // 这项目是topk也要设置大一点

在后台启动 docker-compose.yml 中定义的所有容器服务。

1
2
docker compose up -d
docker compose ps

无需配置域名,解析到服务器,直接访问域名打开dify。

如果需要修改nginx端口,修改.env文件的

1
2
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443

编辑 .env 文件中的环境变量值。需要重新启动 Dify:

1
2
docker compose down
docker compose up -d

更新 Dify:

1
2
3
4
5
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

附docker命令:
docker exec -it docker-web-1 sh #进入docker-web-1容器
exit # 退出容器

1
cd /root/dify/web/public/logo

放入自己的logo.png和logo.svg

用命令替换掉:

1
2
3
4
5
for file in *.svg; do
if [ "$file" != "logo.svg" ]; then
cp -f logo.svg "$file"
fi
done
1
2
3
4
5
for file in *.png; do
if [ "$file" != "logo.png" ]; then
cp -f logo.png "$file"
fi
done

cd ../
docker cp ./logo docker-web-1:/app/web/public/

即可生效。

修改chat源代码

例如修改chat中回复“引用的文件”部分。

1
web/app/components/base/chat/chat/citation/index.tsx

我这里是要实现点击后不弹出,而是打开某个地址。代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
resources.map((res, index) => (
<div
key={index}
className='absolute left-0 top-0 -z-10 mb-1 mr-1 h-7 w-auto max-w-[240px] whitespace-nowrap pl-7 pr-2 text-xs opacity-0'
ref={(ele: any) => (elesRef.current[index] = ele!)}
>
{res.documentName}
{/* <a
href={`https://***.com/viewer?doc_id=${res.documentId}`}
target="_blank"
rel="noopener noreferrer"
>
{res.documentName}
</a> */}
</div>
))
}
{
resources.slice(0, showMore ? resourcesLength : limitNumberInOneLine).map((res, index) => (
<div key={index} className='mb-1 mr-1 cursor-pointer'>
{/* <Popup
data={res}
showHitInfo={showHitInfo}
/> */}
<a
href={`https://***.com/viewer?doc_id=${res.documentId}`}
target="_blank"
rel="noopener noreferrer"
className="inline-block h-7 px-3 py-1 rounded bg-blue-100 text-blue-800 text-xs hover:underline"
>
{res.documentName}
</a>
</div>
))
}

编译:

1
2
3
4
5
6
7
cd web
修改.env.local里的域名为线上域名。
pnpm install
pnpm run build

删除 .next/cache 编译缓存文件夹。
注意编译的dify版本需要与docker部署一致。

进入正在运行的 Docker 容器,备份默认.next文件夹

1
2
docker exec -u root -it docker-web-1 /bin/sh
mv .next .next0626

替换容器.next文件夹

1
2
3
4
5
6
7
在容器外部执行,如果已进入容器要退出。

cd web
docker cp ./.next/ docker-web-1:/app/web/.next/

cd ../docker
docker-compose restart web

欢迎关注我的其它发布渠道