超详细喂饭版!linux/openeuler部署Qwen3-32B等大模型华为昇腾Arm架构服务器anaconda+modelscope+mindie+docker等+openwebui可视化前端界面
1. 基础环境配置
1.1 anaconda安装
系统:openeuler22.03(CentOs)
架构:arrch64
anaconda对应安装资源包下载地址:
Index of /archivehttps://repo.anaconda.com/archive/
下载好后cd到安装包路径,使用安装指令如下:
bash Anaconda3-2025.06-1-Linux-aarch64.sh按照提示接受协议,并选择安装目录。安装完成后,更新环境变量:
source ~/.bashrc1.2 anconda中创建虚拟环境
这部分同windows下的anconda env设置相同。
对于Qwen3模型的下载,配置modelscope环境,代码如下:
#创建新环境,环境名为modelscope conda create -n modelscope python=3.9#这里必须使用python3.9及以上版本,否则在后续下载编译modelscope或者qwen3模型时,会提示no moudle named zoneinfo,因为只有3.9以上的该模型才被假如系统模型库 #激活环境 conda activate modelscope 安装modelscope
pip install modelscope -i https://mirrors.aliyun.com/pypi/simple/ #使用阿里镜像源,下载更快 2. 下载模型库和模型权重
2.1 下载模型权重
如需下载完整模型库: modelscope download --model Qwen/Qwen3-32B (只需要下载部分文件:modelscope download --model Qwen/Qwen3-32B README.md --local_dir ./dir #例如下载readme到本地dir文件夹) *这种方法会把权重默认下载在路径~/.cache/modelscope/下,但是很有可能占用系统盘,影响系统使用,因此把权重下载到指定硬盘,步骤如下。
(1)搜索系统所有硬盘
lsblk -o NAME,SIZE,MOUNTPOINT 输出如下,分别代表了硬盘名字,内存和地址:
NAME SIZE MOUNTPOINT sda 200G ├─sda1 50G / ├─sda2 150G /data sdb 500G /mnt/disk1 sdc 1T /mnt/disk2 (2)把模型权重下载到指定的sdc盘中的models文件夹中(自己新建一个文件夹命名models,需要定位到指定文件夹路径,不要直接下到盘的路径,否则可能还是无法下载到指定盘中!),--local_dir后接本地需要下载到的文件夹路径位置;或者直接cd到需要下载位置的路径下在进行下载也可以!
modelscope download --model Qwen/Qwen3-32B --local_dir /mnt/disk2/models 下载完成后,模型权重会放在/mnt/disk2/models/Qwen/Qwen3-32B/路径下
*删除之前默认下载地址的模型权重,以防占用系统内存:
全盘搜索Qwen3-32B的储存路径:
# 搜索包含 Qwen3-32B 的目录 sudo find / -type d -name "Qwen3-32B" 2>/dev/null会输出包含该模型名字的目录路径,假如为/root/dir
删除该路径的模型权重
# 确认路径后再删除 rm -rf /root/dir2.2 下载华为适配的加速推理引擎MindIE
下载模型适配的推理引擎MindIE,在terminal中输入以下命令行(魔乐社区镜像下载),即开始下载适配本模型Qwen3-32B的镜像包mindie:2.0.T17.B010-800I-A2-py3.11-openeuler24.03-lts-aarch64.tar.gz(也可以进入华为社区下载,MindIE 系列 昇腾计算 2.0.T17 软件补丁下载)
wget https://modelers.cn/coderepo/web/v1/file/xieyuxiang/mindie_2.0.RC1_image/main/media/2.0.RC1-800I-A2-py311-openeuler24.03-lts.tar.gz*!!注意:后续部署大模型时发现上述版本的mindie太老了!!服务挂不起来!!会一直报如下问题!!二更:一般提示如下问题且不报其他错误,log日志中也不提示其他问题报错记录的话,一般都是mindle镜像的原因!!报错后重新在docker中pull下镜像地址即可!
LLMInferEngine failed to init LLMInferModels Killed因此需要下载新版本的mindie安装包后,后续即可正常使用!!
mindie镜像下载最新地址:
https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f
选择所需镜像,点击“立即下载”(1.0.0及以后版本支持DeepSeekR1蒸馏模型):

立即下载后,会弹出:

我们使用的华为服务器是基于arm架构,因此用以下命令下载即可
docker pull --platform=arm64 swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC2-800I-A2-py311-openeuler24.03-lts3. docker镜像加载
3.1 配置docker环境
环境:华为arm架构服务器
版本:openeuler22.03
先禁用/移除导致失败的第三方 repo(之前添加过 docker-ce 的镜像仓库),避免影响其他相关下载和更新,如果之前没有配置好DNS直接用repo不禁用的话,后续重新配置docker也可能会有各种报错!!因此优先推荐先禁用!
# 禁用 docker-ce 的 repo(通常是 docker-ce-stable) sudo dnf config-manager --set-disabled docker-ce-stable || true # 或者直接删除 repo 文件(如果你知道文件在哪里,例如 /etc/yum.repos.d/docker-ce.repo) sudo rm -f /etc/yum.repos.d/docker-ce* || true(1) 更新下相关的dnf 下载包
sudo dnf update -y # 更新系统的软件包*搜索是否dnf中有所需要的安装包/命令 dnf search yum-utils #yum-utils是包的名字,可替换为其他 (2)确认目前系统版本
cat /etc/openEuler-release若输出类似openEuler release 22.03 LTS的信息,则符合安装条件。
(3)卸载旧版本docker,避免版本冲突
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine(4)配置DNS,保证网络和下载
编辑DNS配置文件:
vi /etc/resolv.conf按i进入编辑模式,添加以下DNS服务器地址:
nameserver 114.114.114.114 # 国内通用DNS nameserver 8.8.8.8 # 谷歌公共DNS按Esc退出编辑,输入:wq保存并退出
测试网络连接:
ping www.baidu.com # 出现回显信息说明网络正常*注意:/etc/resolv.conf可能被 NetworkManager 自动覆盖,若后续网络异常,可通过网卡配置文件永久设置 DNS,步骤如下:
*编辑网卡文件(如/etc/sysconfig/network-scripts/ifcfg-eth0),添加:
DNS1=114.114.114.114 DNS2=8.8.8.8 保存后重启网络:systemctl restart network(5)配置docker仓库repo
新建并编辑docker仓库repo配置文件
vi /etc/yum.repos.d/docker-ce.repo添加以下内容,这里使用华为云镜像源加速:
[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://repo.huaweicloud.com/docker-ce/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/docker-ce/linux/centos/gpg输入:wq保存退出
(6)安装docker组件
更新yum缓存
yum makecache # 生成元数据缓存,加快后续安装速度安装docker核心组件
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin❗ 常见问题:若安装时提示container-selinux依赖缺失,先执行以下命令安装依赖:
yum install -y container-selinux(7)启动docker并验证状态
系统中设置开机自启:
systemctl enable docker # 避免系统重启后Docker需要手动启动系统中启动 Docker
systemctl start docker验证安装版本:
docker --version # 输出类似Docker version 24.0.7, build xxx的信息即正常查看运行状态:
systemctl status docker # 显示active (running)说明服务正常运行*注意:systemctl设置好docker之后千万千万不要再随意动systemctl命令了!!比如systemctl stop docker之类的!!强制stop后可能引发系统问题无法直接通过systemctl restart docker!!设置好之后就基本不要再用systemctl指令操作docker了!血的教训!!
错误描述:
本来想停正在运行qwen3的docker的,手贱错误输入了systemctl stop docker,然后悲剧来了,无论是sudo systemctl restart docker/sudo systemctl start docker都不可以,system status docker一直显示failed。。。
解决方案:临时清空 Docker 配置文件
有时 Docker 的配置文件 /etc/docker/daemon.json 中的错误配置会导致启动失败。可以将该配置文件恢复到默认值(空配置),然后尝试重新启动 Docker。命令如下:
sudo echo '{}' > /etc/docker/daemon.json 然后重启docker成功:
sudo systemctl restart docker 如果配置文件中有语法错误或不兼容的设置,清空配置文件并重启应该能够解决问题。
(8) docker镜像加速优化
创建 Docker 配置文件:
vi /etc/docker/daemon.json添加更多镜像源地址:
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", # 网易镜像 "https://mirror.baidubce.com", # 百度镜像 "https://ccr.ccs.tencentyun.com", # 腾讯云镜像 "https://docker.1panelproxy.com", "https://5e96702d4787418295070cded678a7b6.mirror.swr.myhuaweicloud.com", "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker.wanpeng.life", "https://docker.1panel.live", "https://hk11.606166.xyz", "https://docker.1ms.run", "https://docker.domys.cc", "https://docker-0.unsee.tech", "https://docker.hlmirror.com", "https://cjie.eu.org", "https://hub.rat.dev", "https://docker.rainbond.cc" ] }重启docker使配置生效:
systemctl daemon-reload systemctl restart docker(9)docker相关的启动/查询/删除等
查看所有已经配置好的docker(包括运行和停止状态):
docker ps -a #一定要加-a,不加-a则只能输出在运行状态的docker,无法输出已停止状态的 停止某正在运行的docker:
docker stop qwen3-32b #qwen3-32b是docker name 删除某docker:
#方法一:先停止运行后删除 docker stop qwen3-32b #先停止该docker docker rm qwen3-32b #删除docker #方法二:强制删除(无论是否运行) docker rm -f qwen3-32b stop docker后,如需运行docker,需要重新启动后才可以继续使用docker exec -it contain_name bash进入容器::
docker start qwen3-32b3.2 启动容器
首先查询docker中的mindie镜像:
docker images输出如下:

红框中圈出的是新版本的mindie镜像,在下面的docker启动中需要用到。
启动docker:
docker run -it -d --shm-size 200g --net=host --name qwen3-32b \ #--shm-size表示共享内存大小 --name后面填写容器名 --privileged \ --device=/dev/davinci_manager \ #固定参数,用于访问华为固定设备,达芬奇芯片管理器 --device=/dev/hisi_hdc \ #固定参数,用于访问华为固定设备,海思芯片控制器 --device=/dev/devmm_svm \ #固定参数,用于访问固定设备,内存管理和虚拟机 --device=/dev/davinci0 \ #表示访问调用几个npu芯片,davinci0,davinci1....想调用几个npu芯片就可以设置几个,可以在系统中使用npu-smi info查看系统的npu情况 --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \#固定参数,与 Ascend 相关的驱动文件夹,:前是主机地址,;后是容器中的地址(可自定义) -v /usr/local/sbin:/usr/local/sbin \#固定参数,系统的管理工具和二进制文件。:前是主机地址,;后是容器中的地址(可自定义) -v /path/to/model:/path/to/model/in/container \ #:前是主机中实际下载放置的模型路径,:后是要映射到容器中的路径(自定义),例如 -v /run/media/root/2c929422-a9a8-4a9f-a594-bbe16904232d/Qwen3:/data/Qwen3将主机中的模型映射到docker中的/data/Qwen3路径下 a4708118cd12 /bin/bash #a4708118cd12:对应mindie版本在docker image中的image id(也可以用TAG,都是同一个定位),最后用/bin/bash进行命令执行 修改权限:
chown -R root:root /path-to-weights #path-to-weights替换为主机的模型权重路径;如果是非root账户安装,则将root:root改为1000:1000 chmod -R 750 /path-to-weights #path-to-weights替换为主机的模型权重路径 --user:如果您的环境中 HDK 是通过普通用户安装(如默认的 HwHiAiUser),请设置对应的用户组,例如用户组 ID 为 1001,则使用 --user mindieuser:1001;镜像中默认使用的是用户组 1000。
设置容器名称 --name 与镜像名称,例如 800I A2 服务器使用 mindie:2.0.T17.B010-800I-A2-py3.11-openeuler24.03-lts-aarch64。
3.3 进入容器:
docker exec -it qwen3-32b bash #qwen3-32b是上一步设置的容器名称 打开配置文件:
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json 按i进入编辑模式,修改下图红框部分内容。


需要修改的参数意义:
ipAddress “XX.XX.XX.XX” 主机IP
port XXXX 端口号,自定义。不要使用ss -tuln中正在使用监听的端口
httpsEnabled false 关闭HTTPS通信
npuDeviceIds [[0,1,2,3...]] NPU编号,与容器设置保持一致,想要调哪几张npu跑就写入其编号worldSize 4 NPU数量,由npuDeviceIds决定
modelName “qwen3-32b” 模型名称,自定义。调用模型时即使用此名称
modelWeightPath “/path/to/model/in/container” 容器内模型映射路径,与docker run设置保持一致
maxSeqLen XXXX 输入和输出的最大总长度,需大于等于maxInputTokenLen和maxIterTimes的和
maxInputTokenLen XXXX 输入部分的最大token数量,必须小于maxSeqLen,如果输入被截断,可能需要增加这个参数的值
maxPrefillBatchSize XXXX 预填充阶段一个batch中的请求个数上限,范围在[1,maxBatchSize]之间,建议设置为maxBatchSize的一半
maxPrefillTokens XXXX 预填充阶段一个batch中包含的Input token总数的上限,设置为与maxInputTokenLen相同
maxBatchSize XXXX 解码阶段的最大batch size,影响并发能力,取值范围[1,5000]
maxIterTimes XXXX 最大迭代次数,即输出的最大token数,必须小于maxSeqLen
查看ip地址:
# 查看所有网卡信息 ip addr show #或者,简略版查询 ip a 查看port端口占用情况:
ss -tuln #或者 ss -tulnp下面是一个实际例子:
{ "Version" : "1.0.0", "ServerConfig" : { "ipAddress" : "172.16.23.55", "managementIpAddress" : "127.0.0.2", "port" : 1025, "managementPort" : 1026, "metricsPort" : 1027, "allowAllZeroIpListening" : false, "maxLinkNum" : 1000, "httpsEnabled" : false, "fullTextEnabled" : false, "tlsCaPath" : "security/ca/", "tlsCaFile" : ["ca.pem"], "tlsCert" : "security/certs/server.pem", "tlsPk" : "security/keys/server.key.pem", "tlsPkPwd" : "security/pass/key_pwd.txt", "tlsCrlPath" : "security/certs/", "tlsCrlFiles" : ["server_crl.pem"], "managementTlsCaFile" : ["management_ca.pem"], "managementTlsCert" : "security/certs/management/server.pem", "managementTlsPk" : "security/keys/management/server.key.pem", "managementTlsPkPwd" : "security/pass/management/key_pwd.txt", "managementTlsCrlPath" : "security/management/certs/", "managementTlsCrlFiles" : ["server_crl.pem"], "kmcKsfMaster" : "tools/pmt/master/ksfa", "kmcKsfStandby" : "tools/pmt/standby/ksfb", "inferMode" : "standard", "interCommTLSEnabled" : true, "interCommPort" : 1121, "interCommTlsCaPath" : "security/grpc/ca/", "interCommTlsCaFiles" : ["ca.pem"], "interCommTlsCert" : "security/grpc/certs/server.pem", "interCommPk" : "security/grpc/keys/server.key.pem", "interCommPkPwd" : "security/grpc/pass/key_pwd.txt", "interCommTlsCrlPath" : "security/grpc/certs/", "interCommTlsCrlFiles" : ["server_crl.pem"], "openAiSupport" : "vllm", "tokenTimeout" : 600, "e2eTimeout" : 600, "distDPServerEnabled":false }, "BackendConfig" : { "backendName" : "mindieservice_llm_engine", "modelInstanceNumber" : 1, "npuDeviceIds" : [[0,1,2,3]], "tokenizerProcessNumber" : 8, "multiNodesInferEnabled" : false, "multiNodesInferPort" : 1120, "interNodeTLSEnabled" : true, "interNodeTlsCaPath" : "security/grpc/ca/", "interNodeTlsCaFiles" : ["ca.pem"], "interNodeTlsCert" : "security/grpc/certs/server.pem", "interNodeTlsPk" : "security/grpc/keys/server.key.pem", "interNodeTlsPkPwd" : "security/grpc/pass/mindie_server_key_pwd.txt", "interNodeTlsCrlPath" : "security/grpc/certs/", "interNodeTlsCrlFiles" : ["server_crl.pem"], "interNodeKmcKsfMaster" : "tools/pmt/master/ksfa", "interNodeKmcKsfStandby" : "tools/pmt/standby/ksfb", "ModelDeployConfig" : { "maxSeqLen" : 25600, "maxInputTokenLen" : 20480, "truncation" : false, "ModelConfig" : [ { "modelInstanceType" : "Standard", "modelName" : "qwen3_32b", "modelWeightPath" : "/data/Qwen3", "worldSize" : 4, "cpuMemSize" : 5, "npuMemSize" : -1, "backendType" : "atb", "trustRemoteCode" : false } ] }, "ScheduleConfig" : { "templateType" : "Standard", "templateName" : "Standard_LLM", "cacheBlockSize" : 128, "maxPrefillBatchSize" : 50, "maxPrefillTokens" : 25600, "prefillTimeMsPerReq" : 150, "prefillPolicyType" : 0, "decodeTimeMsPerReq" : 50, "decodePolicyType" : 0, "maxBatchSize" : 200, "maxIterTimes" : 10240, "maxPreemptCount" : 0, "supportSelectBatch" : false, "maxQueueDelayMicroseconds" : 5000 } } }3.4 检查资源可用性(可省略)
这部分内容参考网址,主要防止一些报错:
ascend-docker-image: 提供Ascend相关的Dockerfile示例,展示如何创建docker镜像。 - Gitee.com
(1) 检查HDK
(2) 检查torch
(3) 检查mindle组件
3.5 服务化推理-模型测试
拉起服务化,启动模型
cd /usr/local/Ascend/mindie/latest/mindie-service/bin ./mindieservice_daemon新建测试窗口(OpenAI接口)
curl -X POST 172.16.23.55:1060/v1/chat/completions \#POST后接172.16.23.55是ip address,1060是json中设置的port端口号,后面v1...等是相关模型服务 -d '{ "messages": [ {"role": "system", "content": "you are a helpful assistant."}, {"role": "user", "content": "帮我写一个上海富婆爱上我的故事"} ], "max_tokens": 256, "stream": false, "do_sample": true, "temperature": 0.6, "top_p": 0.95, "top_k": 20, "model": "qwen3-32b" }'# -d后'{}'输入测试内容即可,其他的都是模型可调参数输出如下,即部署成功:

3.5 可视化交互前端界面
(1)使用Dify工具包
简介:Dify 是一款开源的大语言模型(LLM)应用开发平台,通过 低代码/无代码 的模块化设计降低生成式 AI 应用的开发门槛,支持集成 OpenAI、Claude3 等主流模型及自托管模型(如 Ollama)。其核心功能包括 后端即服务(BaaS)、可视化 Prompt 编排 和 LLMOps 工具链,可灵活构建智能客服、文本生成等场景。平台内置 RAG 引擎 实现知识库检索增强生成,并通过 Agent 框架 支持复杂任务分解与工具调用(如搜索、绘图),结合 Workflow 工作流 实现多步骤业务逻辑自动化。
(2) Dify安装
版本要求

系统查询命令:
cpu信息查询:
#查询cpu核心数及其他信息: lscpu #或者可以快速查看cpu核心数量: nproc 输出cpu核心数量大于2即可
ram信息查询:
#检查内存大小(RAM) free -h RAM输出
total used free shared buff/cache available Mem: 7.7Gi 1.6Gi 3.3Gi 160Mi 2.8Gi 5.3Gi Swap: 2.0Gi 0B 2.0Gi 在 Mem 行,查看 total 字段的值。确保总内存大于或等于 4 GiB
拉取Dify镜像:
git clone https://github.com/langgenius/dify.git --branch 0.15.3修改配置:
#进入docker目录 cd dify/docker #复制环境配置文件 cp .env.example .env #vim打开.env文件更改端口号 vim .env将NGINX_PORT与NGINX_PORT_EXPOSE更改为未使用的端口(可自定义)。
默认使用80端口,若无冲突则无需更改。


如果不配置docker镜像源,会报错如下:
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)docker镜像配置(国内一般很难直接从docker官方源拉取镜像,因此要配置镜像源如下):
[root@localhost ~]# vim /etc/docker/daemon.json [root@localhost ~]# more /etc/docker/daemon.json { "default-runtime": "ascend", "registry-mirrors":[ "registry-mirrors": [ "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com", "https://docker.m.daocloud.io", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://your_preferred_mirror", "https://dockerhub.icu", "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.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" ], "runtimes": { "ascend": { "path": "/usr/local/Ascend/Ascend-Docker-Runtime/ascend-docker-runtime", "runtimeArgs": [] } } }添加完成后,需要重新加载docker的配置文件以生效:
systemctl daemon-reload重启docker服务:
systemctl restart docker.service启动容器:
docker compose up -d如果得到以下输出,代表服务拉起成功:

检查容器是否正常运行:
docker compose ps所有容器的运行状态与占用端口如下。应该看到包含3个业务服务(api / worker / web)以及6个基础组件(weaviate / db / redis / nginx / ssrf_proxy / sandbox)在内的总共9个容器,且STATUS均为Up,服务全部挂起成功。
(3)可视化web配置
登录dify网页
在浏览器内输入“本机ip:端口号”该端口号为在启动dify时更改的NGINX_PORT(见本章节(2)),若无更改,则使用默认的80端口登录。例如:网址:172.16.23.55:80
*注意:这里又又又有一个坑啦!
第一次输入网址大概率无法访问网页,会出现如下界面!

原因:web 服务没有配置端口映射。需要在 web 服务下添加 ports端口配置。在dify文件夹中找到 docker-compose.yml 文件,并作以下修改:
(1)查看现有docker端口映射情况:
docker ps输出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 123456789abc nginx:latest "/docker-entrypoint...." 2 days ago Up 2 days 0.0.0.0:3000->80/tcp web_container 如果PORT一列显示0.0.0.0:3000->80/tcp 则表明主机中的3000端口正常被映射到docker中设置的80端口,此时web服务可以被启用;若映射不完整,只显示主机端口占用情况0.0.0.0:3000或者只有docker中设置的占用端口80/tcp,那么都无法直接在网页中进行启动。此时就需要设置docker-compose中的映射端口。
(2)切换到相应目录:
cd D:\Desktop\dify-main\dify-main\docker #切换目录(3)编辑配置文件:
vim docker-compose.yml(4)在service中找到 web 服务的配置部分,在原文件中的restart:always和environment中间添加ports 映射:
# Frontend web application.
web:
image: langgenius/dify-web:0.14.1
restart: always
# 添加以下 ports 配置
ports:
- "3000:80" # 宿主机端口号:容器端口号,将主机端口映射到之前设置的容器NGINX_PORT=80端口,注意缩进格式
environment:
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
APP_API_URL: ${APP_API_URL:-}
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}
CSP_WHITELIST: ${CSP_WHITELIST:-}
当在宿主机上访问http://<宿主机IP>:80(例如,http://localhost:80或者宿主机的 IP 地址),请求将被转发到容器的 80 端口。如果没有设置端口映射,容器的端口只对容器内部可用,外部无法访问。
:wq保存并退出后,重启docker服务:
docker compose down docker compose up -d输出如下,则代表web端口已映射,可以在网页中打开Dify了:

docker compose同时管理多个容器,支持web和数据库访问管理services定义了应用的不同服务,如:web服务使用 Nginx 镜像,并暴露端口 80。db服务使用 MySQL 镜像,并设置环境变量MYSQL_ROOT_PASSWORD。
输入网址后界面如下,第一次登陆需要设置邮箱,用户名和密码等。

模型配置:
点击右上角用户头像,进入设置。

(1)大语言模型(LLM)
选择模型供应商中的OpenAI-API-compatible模块。点击添加模型。

模型类型选择“LLM”,“模型名称”与Mind IE服务化配置dcoker文件“config.json”中的“modelName”保持一致,例如之前配置的是qwen3-32b模型,“API endpoint URL”填写“http://本机ip:qwen3-32b的port端口/v1”,。“模型上下文长度”与“最大 token 上限”按需填写。例如:http://172.16.23.55:1060

返回首页,创造一个对话应用窗口

创建聊天助手,进行测试。

在右侧的聊天界面中进行Q&A

参考资料:
【modelscope安装】
ModelScope初体验 - Joy-word - 博客园
【Qwen3-32B模型权重下载】
【mindie下载】
【docker环境配置】
华为欧拉系统(openEuler)安装 Docker 容器完整教程_openeuler安装docker-ZEEKLOG博客
【华为服务器部署大模型+测试】
(99+ 封私信 / 80 条消息) 华为 Atlas 800I A2 大模型部署实战(三):MindIE 安装与部署 LLM - 知乎
使用MindIE部署大模型——以Qwen3-32B为例_mindie部署qwen3-ZEEKLOG博客
鲲鹏+昇腾Atlas800IA2(910B4)部署Qwen3-32B【简单自用版】_910b部署qwen3-ZEEKLOG博客
ascend-docker-image: 提供Ascend相关的Dockerfile示例,展示如何创建docker镜像。 - Gitee.com
https://mp.weixin.qq.com/s/Q4J77DsnKKzlQeBVbNf2qA?scene=1
【可视化前端交互】
【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑14B大语言模型_20250817_atlas300i duo qwen3-ZEEKLOG博客
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose