麒麟V10离线部署dify

返回
Author Avatar
钢翼
2026-03-24
编程
31

1.在一台可联网的相同cpu架构的linux上部署dify。

2.导出相关镜像

怎么知道是不是相关镜像?dify启动时看日志哪些容器在启动。还有一个busybox容器是后面在目标服务器启动dify报错时知道的。 需要导出以下镜像

busybox
dify-api
dify-plugin-daemon
dify-sandbox
dify-web
docker-elk-elasticsearch
docker-elk-kibana
docker-elk-logstash
nginx
postgres
redis
squid
weaviate
# 根据关键字查询镜像名和版本
docker images | grep {关键字}
# 导出镜像
docker save -o {文件名}.tar {镜像名}:{镜像版本}

3.压缩dify目录

tar -zcvf {压缩包名称}.tar.gz {dify目录}

4.在麒麟V10上部署docker和docker-compose

推荐版本docker v23.0.6,docker-compose v2.20.2

  • docker docker由于离线部署容易有依赖问题,建议使用离线包部署,下载地址https://download.docker.com/linux/static/stable/x86_64/ 解压到/usr/bin
tar -xzvf docker-23.0.6.tgz
mv docker/* /usr/bin

添加自启动

vi /etc/systemd/system/docker.service

内容为以下内容

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target

启动

chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker
  • docker-compose dify对docker版本有要求,试过v2.19.0,结果一堆配置不支持。版本太高又会报缺少GLIBC依赖。用v2.20.2刚好。
    下载地址:https://github.com/docker/compose/releases/tag/v2.20.2 下载后直接拷贝到/usr/local/bin。并赋予执行权限

5.加载镜像和拷贝dify

将联网机器上的镜像文件拷贝到麒麟V10上,并加载镜像

docker load -i {文件名}.tar

6.拷贝dify

将联网机器上的dify压缩包拷贝到麒麟V10上,并解压。

7.启动dify

进入dify的docker目录 失败的启动命令

# 执行这个会由于没有启动postgres容器,启动没报错,访问/console/api/setup会报500
# 可通过 docker-compose logs api | tail -50查看相关报错日志
docker-compose up -d
# 分析原因后需要通过添加--profile postgresql启动数据库容器。但访问/console/api/setup还是会报500
docker-compose --profile postgresql up -d
# 报错日志 docker-api-1  | sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name "db" to address: Temporary failure in name resolution

成功的启动命令

#最后通过设置DB_HOST解决
DB_HOST=db_postgres docker-compose --profile postgresql up -d

内网访问接口超过30秒的问题

编辑docker-compose.yaml,在services的api,worker中的environment中添加以下配置 NO_PROXY: localhost:127.0.0.1,{接口ip}