超详细喂饭版!linux/openeuler部署Qwen3-32B等大模型华为昇腾Arm架构服务器anaconda+modelscope+mindie+docker等+openwebui可视化前端界面
1. 基础环境配置
1.1 anaconda安装
系统:openeuler22.03(CentOs)
架构:arrch64
anaconda对应安装资源包下载地址:
Index of /archive
https://repo.anaconda.com/archive/
下载好后cd到安装包路径,使用安装指令如下:
bash Anaconda3-2025.06-1-Linux-aarch64.sh
按照提示接受协议,并选择安装目录。安装完成后,更新环境变量:
source ~/.bashrc
1.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/dir
2.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-lts
3. 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-32b
3.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:Desktopdify-maindify-maindocker #切换目录
(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模型权重下载】
通义千问3-32B · 模型库
Qwen3-32B-模型库-ModelZoo-昇腾社区
【mindie下载】
基于Atlas 800I A2的RAG端到端实践
【docker环境配置】
华为欧拉系统(openEuler)安装 Docker 容器完整教程_openeuler安装docker-CSDN博客
解决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) - 谢墨尘 - 博客园
【华为服务器部署大模型+测试】
(99+ 封私信 / 80 条消息) 华为 Atlas 800I A2 大模型部署实战(三):MindIE 安装与部署 LLM - 知乎
使用MindIE部署大模型——以Qwen3-32B为例_mindie部署qwen3-CSDN博客
鲲鹏+昇腾Atlas800IA2(910B4)部署Qwen3-32B【简单自用版】_910b部署qwen3-CSDN博客
Qwen3-32B-模型库-ModelZoo-昇腾社区
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-CSDN博客
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
无法打开Dify网页管理界面_dify打不开-CSDN博客









