dify1.4.1学习01-使用docker-compose部署

一、参考文档

  • 官方部署文档:
    • https://docs.dify.ai/en/getting-started/install-self-hosted/docker-compose

二、环境信息

  • 服务器信息:

    • 主机名 IP 操作系统 规格 GPU情况 备注
      g406011748489384920 10.11.15.190(VPC)
      10.251.19.46(浮动IP)
      Ubuntu 22.04.5 LTS 12c20g+100G NVIDIA GeForce RTX 4060*1

此文档使用docker-compose的方式来部署dify。

三、部署操作

3.1 下载安装源码

1
2
3
# current latest version is 1.4.1
#如果太慢或一直拉取失败就先导入到gitee中再拉取(https://gitee.com/sy-jiang/dify.git)
(llamafactory) root@g406011748489384920:/opt/code_repos# git clone https://github.com/langgenius/dify.git --branch 1.4.1

3.2 安装Docker

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
37
38
39
40
41
42
43
44
45
46
47
#安装依赖组件
root@g406011748489384920:~# apt install apt-transport-https ca-certificates curl gnupg lsb-release
#如果有弹出窗口提示哪些服务或守护进程要重启,保持默认即可。

#从阿里云镜像站下载 Docker CE 的 GPG 密钥,并将其添加到系统的 APT 密钥链中
root@g406011748489384920:~# curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#添加阿里云的docker-ce安装源,比默认使用的官方安装源要快些
root@g406011748489384920:~# add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#执行安装docker-ce
root@g406011748489384920:~# apt install docker-ce docker-ce-cli containerd.io
#如果有弹出窗口提示哪些服务或守护进程要重启,保持默认即可。

root@g406011748489384920:~# vi /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"dns": [
"223.5.5.5",
"223.6.6.6",
"8.8.8.8"
],
"log-opts": {
"max-file": "5",
"max-size": "50m"
},
"registry-mirrors": [
"https://hub.rat.dev",
"https://registry.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.chenby.cn",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}

#重启docker
root@g406011748489384920:~# systemctl daemon-reload
root@g406011748489384920:~# systemctl restart docker

3.3 安装docker-compose

1
2
3
4
5
6
root@g406011748489384920:/opt# mkdir /opt/instakkPkgs
root@g406011748489384920:/opt# cd /opt/instakkPkgs/
#直接下载二进制可执行文件
root@g406011748489384920:/opt/instakkPkgs# curl -L "https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
#赋予可执行权限
root@g406011748489384920:/opt/instakkPkgs# chmod +x /usr/local/bin/docker-compose

3.4 执行部署相关命令

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
#备份相关文件
root@g406011748489384920:/opt/code_repos/dify/docker# cp .env.example .env && cp docker-compose.yaml docker-compose.yaml.bak

#修改.env文件
root@g406011748489384920:/opt/code_repos/dify/docker# vi .env
PLUGIN_PYTHON_ENV_INIT_TIMEOUT=120 ---> PLUGIN_PYTHON_ENV_INIT_TIMEOUT=600
PIP_MIRROR_URL= ---> PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple

#修改docker-compose.yaml文件(这个是自己OpenStack虚拟机的特殊配置,此虚拟机创建时使用的是vxlan网络,此vxlan网络在Openstack中对应一个vxlan类型
# 网络条目,此vxlan类型网络条目有一个mtu属性,其默认值是1450,创建虚拟机时使用此vxlan网络,然后虚拟机被分配得到一个网卡ens3,其对应的IP是
# 10.11.15.190,然后虚拟机操作系统上有一个文件值即“/sys/class/net/ens3/mtu”也继承Openstack此vxlan类型网络条目的mtu属性值。但使用docker
# network create创建容器网络时如果没有明确声明mtu值,其默认值却是1500。虚拟机上mtu值与容器网络的mtu值不一致,就会出现网络通信问题,此时在创建容器
# 网络时要明确指定其mtu值,保持二者相同。)
#1)在docker-compose.yaml文件中的network块下添加如下内容
root@g406011748489384920:/opt/code_repos/dify/docker# vi docker-compose.yaml
networks:
# create a network between sandbox, api and ssrf_proxy, and can not access outside.
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: "1450"
milvus:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: "1450"
#2)db、plugin_daemon、nginx、weaviate、web、worker、redis下添加一个networks: docker_default ,即如下:(此操作可省)
plugin_daemon:
image: langgenius/dify-plugin-daemon:0.1.1-local
networks:
- default
...
1
2
#启动dify服务
root@g406011748489384920:/opt/code_repos/dify/docker# docker-compose up -d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#查看所有容器的状态
(llamafactory) root@g406011748489384920:/opt/code_repos/dify/docker# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:1.4.1 "/bin/bash /entrypoi…" api 32 seconds ago Up 29 seconds 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db 38 seconds ago Up 32 seconds (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 32 seconds ago Up 28 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp
docker-plugin_daemon-1 langgenius/dify-plugin-daemon:0.1.1-local "/bin/bash -c /app/e…" plugin_daemon 32 seconds ago Up 29 seconds 0.0.0.0:5003->5003/tcp, [::]:5003->5003/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 38 seconds ago Up 32 seconds (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.12 "/main" sandbox 38 seconds ago Up 32 seconds (healthy)
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy 38 seconds ago Up 32 seconds 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate 38 seconds ago Up 32 seconds
docker-web-1 langgenius/dify-web:1.4.1 "/bin/sh ./entrypoin…" web 38 seconds ago Up 32 seconds 3000/tcp
docker-worker-1 langgenius/dify-api:1.4.1 "/bin/bash /entrypoi…" worker 32 seconds ago Up 29 seconds 5001/tcp

3.5 登录web界面继续部署

浏览器访问:http://10.251.19.46/install ,输入管理员的相关信息后,点击设置

image-20250603143953358

然后使用上述管理员信息登录,即可看到dify1.4.1如下界面:

image-20250603144140386

dify1.4.1学习01-使用docker-compose部署
https://jiangsanyin.github.io/2025/06/03/dify1.4.1学习01-使用docker-compose部署/
作者
sanyinjiang
发布于
2025年6月3日
许可协议