news 2026/10/15 11:26:59

Dify私有化部署实战:从单机Docker到企业高可用架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dify私有化部署实战:从单机Docker到企业高可用架构

1. 为什么私有化部署 Dify 值得认真对待

把 Dify 跑起来这件事,说简单也简单,官方一行docker compose up -d就能在本地看到界面;说复杂也复杂,我见过太多团队在测试环境跑得挺欢,一上生产就各种问题:镜像拉不下来、SSL 证书报错、知识库一直排队、工作流上下文超长直接崩、升级之后 DSL 文件版本不兼容。这些坑我在过去一年里几乎踩了个遍,所以这篇就把从单机 docker-compose 到企业高可用架构的完整路径梳理一遍,尽量把每一步的“为什么”讲清楚。

Dify 本质上是一个 LLM 应用开发平台,它把智能体、工作流、知识库、插件、模型接入这些能力打包成一套可视化系统。社区版可以私有化部署,这对数据敏感的企业来说非常关键——你的知识库文档、对话记录、API Key 全都在自己机房,不用出内网。但私有化部署不等于“装完就完事”,它涉及容器编排、反向代理、数据库、向量库、对象存储、缓存、可观测性等一整套基础设施。这篇文章适合两类人:一是刚接触 Dify、想在自己服务器上跑起来的开发者;二是已经跑起来、但准备把它推到生产环境、需要做高可用和运维体系的团队。

我会按“整体设计思路 → 核心组件拆解 → 实操部署流程 → 常见问题排查”的顺序来讲,中间穿插大量我实际踩过的坑和参数选择依据。你不需要全部照抄,但每一步的取舍逻辑我会讲明白,方便你按自己团队的规模做裁剪。

2. 整体架构设计与方案选型思路

2.1 从单机 compose 到高可用的演进逻辑

官方给的 docker-compose 模板,默认是把 api、worker、web、db、redis、weaviate、nginx 全部塞在一台机器上。这套配置用来做 POC 或者小团队内部试用完全够用,但它有几个硬伤:第一,所有服务共享一台机器的 CPU 和内存,知识库索引和对话推理会互相抢资源;第二,数据库和向量库没有副本,机器一挂全挂;第三,worker 只有一个实例,知识库文档一多就排队;第四,没有健康检查和自动重启策略,容器偶发崩溃后需要人工介入。

所以演进路径我一般建议分三步走。第一步是“单机多容器”,把 compose 跑通,理解各组件依赖关系;第二步是“拆分数据层”,把 PostgreSQL、Redis、向量库、对象存储挪到独立主机或托管服务,应用层保持单机;第三步才是“应用层高可用”,api 和 worker 多副本,前面挂负载均衡,数据库做主从,向量库做集群。很多团队一上来就想搞第三步,结果连第一步的镜像问题都没解决,反而浪费时间。

这里有个关键判断:你的瓶颈到底在哪。如果只是几十个人的内部使用,单机 8C16G 加独立数据库就够了,没必要上 K8s。如果是几百人并发、知识库几十万文档,那 worker 的水平扩展和向量库的选型才是重点。我见过一个团队盲目上了 K8s,结果因为不熟悉存储卷配置,数据丢了一次,得不偿失。

2.2 核心组件职责与依赖关系

Dify 的容器拓扑里,几个核心组件的职责必须搞清楚,否则排查问题时会一头雾水。

  • api:对外提供 REST 接口,处理对话、工作流触发、知识库管理等请求,是无状态服务,可以多副本。
  • worker:消费 Redis 队列里的异步任务,主要是知识库文档的解析、切分、向量化。这是最吃资源的组件,也是“知识库排队中”的根源。
  • web:前端静态资源,Nginx 托管即可。
  • db(PostgreSQL):存应用配置、对话记录、工作流定义、账号信息,是强状态组件。
  • redis:做缓存和任务队列,worker 和 api 都依赖它。
  • 向量库(weaviate/qdrant/milvus):存知识库的向量索引,检索质量直接取决于它。
  • storage(本地/S3/MinIO):存上传的原始文档和生成的图片等文件。

依赖关系上,api 和 worker 都依赖 db、redis、向量库、storage;web 只依赖 api。理解这一点很重要:db 或 redis 挂了,整个系统不可用;worker 挂了,只是知识库不更新,对话还能继续。所以做高可用时,优先级是 db > redis > 向量库 > worker > api。

2.3 部署方式的取舍:compose、K8s 还是裸机

很多人纠结用哪种编排方式。我的经验是:团队规模小于 50 人、没有专职运维,就用 docker-compose,但要做数据层外置;团队有 K8s 经验、需要弹性伸缩,再上 K8s。裸机部署(直接装 Python 环境跑)我不推荐,依赖管理太痛苦,升级时容易把环境搞乱。

docker-compose 的优势是直观、易调试、迁移方便,一个docker-compose.yml加一个.env就能描述整个系统。缺点是跨主机编排能力弱,多副本需要配合外部负载均衡。K8s 的优势是自愈、滚动升级、资源调度,但学习曲线陡,对于 Dify 这种组件不算特别多的系统,有点杀鸡用牛刀。折中方案是用 docker swarm,但生态不如 K8s 活跃,我一般不建议。

还有一个容易被忽略的点:镜像来源。国内环境直接拉 Docker Hub 经常失败,需要配置镜像加速或者用离线 tar 包。这个后面实操部分会详细讲。

3. 核心组件细节与实操要点拆解

3.1 环境准备与 Docker 引擎安装要点

在动手之前,先把基础环境理清楚。操作系统我推荐 Ubuntu 22.04 LTS 或 Rocky Linux 9,内核版本 5.x 以上,避免老内核的 cgroup 问题。Docker 版本建议 24.x 以上,docker-compose 用 v2 插件形式(docker compose而不是docker-compose),因为 v1 已经停止维护。

安装 Docker 时有个坑:不要用系统自带的 docker.io 包,版本太老,compose 插件可能不兼容。用官方脚本或者配置官方源安装。安装完执行docker info确认 cgroup driver 是 systemd,这关系到容器资源限制是否生效。

# 以 Ubuntu 为例,配置官方源 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

装完之后,配置镜像加速。这一步在国内几乎是必须的,否则拉取 dify 镜像会超时。编辑/etc/docker/daemon.json:

{ "registry-mirrors": ["https://your-mirror.example.com"], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }

日志限制这一项很多人不加,结果跑几个月磁盘被容器日志撑爆。max-size和max-file组合起来能限制单个容器日志总量,非常实用。

注意:镜像加速地址需要你自己找可用的,不同地区可用的地址不一样,这里不具体推荐。如果实在拉不下来,就走离线 tar 包方案,后面会讲。

3.2 目录规划与数据持久化设计

Dify 的 compose 模板默认用 Docker volume 存数据,这在单机场景没问题,但做迁移和备份时很麻烦,因为 volume 的位置不好找。我习惯改成bind mount,把所有持久化数据集中到一个目录下,比如/data/dify/,结构如下:

/data/dify/ ├── postgres/ # 数据库数据 ├── redis/ # Redis 持久化 ├── weaviate/ # 向量库数据 ├── storage/ # 上传的文件 ├── plugins/ # 插件数据 └── backups/ # 备份目录

这样备份时直接打包/data/dify/就行,迁移时整个目录拷过去,改一下权限就能用。权限方面,PostgreSQL 容器里的 uid 是 999,Redis 是 999,weaviate 是 1000,如果 bind mount 的目录权限不对,容器会启动失败并报 permission denied。我一般先创建目录,然后chown -R 1000:1000或者根据具体镜像调整。

还有一个细节:不要把数据目录放在系统盘。知识库文档和向量索引增长很快,几十万文档轻松上百 GB。单独挂一块数据盘,挂载到/data,既方便扩容,也避免系统盘写满导致整机故障。

3.3 数据库与 Redis 的独立部署考量

单机 compose 里,PostgreSQL 和 Redis 都是容器。生产环境我强烈建议把它们独立出来,原因有三:第一,数据库对 IO 和内存敏感,和 api/worker 抢资源会互相影响;第二,独立部署后可以做主从、备份、监控;第三,升级 Dify 时不用动数据库容器,降低风险。

PostgreSQL 版本建议 15 或 16,Dify 对 14 以上都支持。关键参数调优:

参数建议值说明
shared_buffers内存的 25%缓存热数据
work_mem16MB-64MB排序和哈希操作
maintenance_work_mem256MB索引创建
max_connections200-500根据 api/worker 副本数调整
wal_levelreplica做主从必须

Redis 建议 7.x,开启 AOF 持久化(appendonly yes),避免重启后任务队列丢失。如果 worker 任务量大,Redis 内存要给足,maxmemory-policy设成noeviction,因为队列数据不能被淘汰。

提示:Dify 的 worker 依赖 Redis 队列,如果 Redis 重启且没开持久化,正在排队的知识库任务会全部丢失,用户看到的就是“知识库排队中”然后一直不动。这个坑我踩过一次,后来强制所有环境都开 AOF。

3.4 向量库选型:weaviate、qdrant 还是 milvus

向量库是知识库检索的核心,选型要考虑数据量、检索性能、运维复杂度。Dify 默认用 weaviate,也支持 qdrant、milvus、pgvector 等。

  • weaviate:默认选项,开箱即用,支持混合检索,单机性能不错。缺点是集群模式配置复杂,社区版功能有限。
  • qdrant:Rust 写的,性能好,内存占用低,集群支持完善,运维相对简单。我比较推荐中小规模用这个。
  • milvus:功能最全,支持十亿级向量,但组件多(etcd、minio、pulsar),运维成本高,适合大规模场景。
  • pgvector:直接挂在 PostgreSQL 上,运维最简单,但数据量超过百万级后性能下降明显。

我的建议是:文档量 10 万以内用 pgvector 或 qdrant,10 万到百万用 qdrant 集群,百万以上再考虑 milvus。选型时还要注意 embedding 维度,不同模型的向量维度不一样(比如 1536、1024、768),建库时要匹配,否则检索结果会错乱。

3.5 反向代理与 SSL 证书配置

生产环境必须上 HTTPS,否则浏览器会拦截部分功能,API 调用也不安全。Nginx 是最常用的反向代理,配置时有几个关键点。

第一,WebSocket 支持。Dify 的对话流式输出依赖 SSE 或 WebSocket,Nginx 要配置proxy_set_header Upgrade和Connection,否则流式输出会变成一次性返回。

第二,超时时间。工作流执行可能很久,proxy_read_timeout要设大一点,比如 300s,否则长任务会被 Nginx 掐断。

第三,请求体大小。上传知识库文档时,client_max_body_size默认 1MB 太小,要调到 100MB 甚至更大。

server { listen 443 ssl http2; server_name dify.example.com; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; client_max_body_size 100m; location / { proxy_pass http://dify-api:5001; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 300s; proxy_buffering off; } }

proxy_buffering off这一项对流式输出很关键,开启缓冲会导致前端迟迟收不到数据。SSL 证书用 Let's Encrypt 自动续期,或者企业内网用自签 CA,但自签证书要在客户端信任,否则会报dify ssl错误。

4. 完整部署流程与关键环节实现

4.1 获取代码与配置环境变量

先从官方仓库拉取代码,或者下载 release 包。我习惯用 git clone,方便后续更新。

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

.env文件是配置核心,几个必须改的项:

# 对外访问地址,影响回调、文件 URL 生成 CONSOLE_API_URL=https://dify.example.com CONSOLE_WEB_URL=https://dify.example.com SERVICE_API_URL=https://dify.example.com APP_WEB_URL=https://dify.example.com # 数据库连接,如果外置就改这里 DB_HOST=your-postgres-host DB_PORT=5432 DB_USERNAME=dify DB_PASSWORD=strong-password-here DB_DATABASE=dify # Redis REDIS_HOST=your-redis-host REDIS_PORT=6379 REDIS_PASSWORD=strong-redis-password # 向量库 VECTOR_STORE=qdrant QDRANT_URL=http://your-qdrant-host:6333 QDRANT_API_KEY=your-qdrant-key # 密钥,必须改,否则有安全风险 SECRET_KEY=generate-a-random-64-char-string INIT_PASSWORD=your-admin-password

SECRET_KEY一定要改,用openssl rand -base64 42生成。这个 key 用于加密敏感数据,泄露了等于数据库裸奔。INIT_PASSWORD是初始管理员密码,第一次登录后可以改。

注意:CONSOLE_API_URL这些地址如果配错,会出现登录后跳转异常、文件上传失败、插件回调不通等问题。部署前一定要确认域名解析和证书都正常。

4.2 镜像拉取与离线 tar 包方案

配置好.env后,执行docker compose pull拉取镜像。如果网络不通,会卡在拉取阶段。这时候有两个方案。

方案一:配置镜像加速,前面已经讲过。方案二:离线 tar 包。在有网络的机器上拉取镜像,然后docker save导出:

# 在有网的机器上 docker pull langgenius/dify-api:1.0.0 docker pull langgenius/dify-web:1.0.0 docker pull postgres:15-alpine docker pull redis:7-alpine # ... 其他镜像 docker save -o dify-images.tar \ langgenius/dify-api:1.0.0 \ langgenius/dify-web:1.0.0 \ postgres:15-alpine \ redis:7-alpine # 拷贝到目标机器 scp dify-images.tar user@target:/data/dify/ # 在目标机器导入 docker load -i /data/dify/dify-images.tar

导出前先docker images确认所有需要的镜像都拉全了,包括 sandbox、plugin-daemon 这些。漏一个就会在启动时报image not found。

4.3 启动顺序与健康检查

镜像就绪后,不要直接docker compose up -d一把梭。正确的启动顺序是:先起 db、redis、向量库,等它们健康后再起 api、worker,最后起 web 和 nginx。因为 api 启动时会连数据库做 migration,数据库没起来会直接失败退出。

# 先起数据层 docker compose up -d db redis qdrant # 等待健康检查通过 docker compose ps # 再起应用层 docker compose up -d api worker web nginx

compose 文件里可以配置depends_on加condition: service_healthy,但要注意 compose v2 才支持这个语法。健康检查用pg_isready、redis-cli ping、curl等命令。

启动后看日志确认:

docker compose logs -f api docker compose logs -f worker

api 日志里看到Application startup complete才算成功。worker 日志里看到celery@... ready说明队列消费者就绪。

4.4 初始化与首次登录

浏览器访问配置的域名,第一次会要求设置管理员账号。如果之前已经初始化过,会直接进登录页。登录后先做几件事:检查模型供应商配置、测试知识库上传、跑一个简单工作流。

模型接入是重点。Dify 支持 OpenAI 兼容接口,本地模型可以用 Ollama、vLLM 等。配置时注意 base URL 要能被容器访问到,如果 Ollama 跑在宿主机,容器里要用host.docker.internal或者宿主机内网 IP,不能用localhost。

# 测试容器到 Ollama 的连通性 docker compose exec api curl http://host.docker.internal:11434/api/tags

如果连不通,检查防火墙和 Ollama 的OLLAMA_HOST配置,默认只监听 127.0.0.1,要改成0.0.0.0。

4.5 知识库流水线配置与 worker 扩展

知识库是 Dify 最吃资源的功能。文档上传后,worker 会执行解析、切分、embedding、入库的流水线。文档一多,单个 worker 处理不过来,用户就会看到“知识库排队中”。

扩展 worker 很简单,compose 里加--scale worker=3,或者 K8s 里调副本数。但要注意,worker 是无状态的,可以随便扩,但 embedding 调用有速率限制,扩太多反而会触发模型 API 的限流。我一般按“每 2 个 worker 配 1 个 embedding 并发”来估算。

切分策略也很关键。默认按 1024 token 切分,重叠 50 token。对于技术文档,我建议按标题层级切分,保留上下文;对于 FAQ,按问答对切分。切分太大检索不准,太小丢失上下文,需要根据文档类型调。

提示:知识库索引时如果报an error occurred during credentials validation,多半是 embedding 模型的 API Key 或 base URL 配错了,去模型供应商设置里重新验证一下。

5. 常见问题与排查技巧实录

5.1 镜像与依赖类问题

问题:docker-compose: error while loading shared libraries: libz.so.1

这是 docker-compose v1 在缺少 zlib 库的系统上的典型报错。解决方法是装zlib1g,或者直接升级到 compose v2 插件。v2 是 Go 写的静态二进制,不依赖系统库,兼容性好很多。

sudo apt-get install -y zlib1g # 或者升级到 v2 sudo apt-get install -y docker-compose-plugin

问题:镜像拉不下来,一直 timeout

先确认镜像加速配置生效:docker info | grep -A 5 "Registry Mirrors"。如果加速地址也不通,就走离线 tar 包。另外注意,有些镜像 tag 是latest,拉取时可能拿到不兼容的新版本,生产环境一定要固定版本号。

5.2 SSL 与网络类问题

问题:dify ssl错误,浏览器提示证书无效

分两种情况。如果是自签证书,客户端要导入 CA;如果是 Let's Encrypt,检查证书是否过期、域名是否匹配。还有一个隐蔽的坑:Dify 内部服务之间如果也走 HTTPS,容器里可能不信任自签 CA,需要在容器里挂载 CA 证书或者配置NODE_TLS_REJECT_UNAUTHORIZED=0(仅测试环境)。

问题:流式输出不生效,回复一次性出现

检查 Nginx 的proxy_buffering是否关闭,proxy_read_timeout是否够大。另外确认X-Accel-Buffering: no响应头是否透传。

5.3 知识库与工作流类问题

问题:知识库一直显示“排队中”

先看 worker 日志有没有报错,再看 Redis 队列长度:

docker compose exec redis redis-cli -a your-password llen celery

如果队列很长但 worker 不动,可能是 worker 卡在某个任务上,重启 worker 容器。如果队列为空但状态还是排队,可能是任务状态没回写,检查数据库连接。

问题:工作流上下文超长

这是dify工作流 上下文超长的典型场景。原因是工作流里节点太多,或者知识库检索返回的片段太多,拼起来超过了模型的 context window。解决方法:减少检索 top_k,开启 rerank 精排,或者在节点间加摘要节点压缩上下文。模型侧也可以换更大 context 的模型。

问题:导入 DSL 文件提示版本不兼容

Dify 的 DSL 格式在不同版本间有变化。高版本导出的 DSL 在低版本导入会失败。手动降级的方法是编辑 DSL 的 YAML 文件,把version字段改成目标版本,然后删掉低版本不认识的节点类型。这个操作有风险,建议先在测试环境验证。

5.4 升级与迁移类问题

问题:在线升级后数据丢失或服务起不来

升级前必须备份数据库和 storage 目录。升级步骤:先停 worker 和 api,备份,拉新镜像,执行 migration,再启动。migration 由 api 容器启动时自动执行,如果失败会阻塞启动,看日志定位。

问题:迁移到新机器后插件不可用

插件数据存在plugins目录和数据库里,迁移时要一起搬。如果插件是本地安装的,还要确认插件依赖的 Python 包在新环境能装上。离线环境需要提前把插件包也导出。

5.5 常见问题速查表

现象可能原因排查方向
镜像拉取失败网络/加速配置docker info 看 mirror
容器启动即退出依赖未就绪看日志,检查 db/redis
知识库排队不动worker 异常/队列积压worker 日志 + redis 队列长度
流式输出失效Nginx 缓冲proxy_buffering off
SSL 证书报错证书链/域名不匹配openssl s_client 验证
上下文超长检索片段过多调 top_k + rerank
DSL 导入失败版本不兼容改 version 字段
插件安装失败网络/依赖缺失离线包 + 日志

6. 高可用架构的落地要点

6.1 应用层多副本与负载均衡

api 和 worker 都是无状态的,可以水平扩展。api 多副本时,前面挂 Nginx 或云负载均衡,做健康检查(/health接口)。worker 多副本时,注意 Celery 的队列分发,默认是轮询,任务量大时可以按队列拆分,比如知识库任务和普通任务分开队列。

会话粘性方面,Dify 的 api 本身不存 session,状态都在 db 和 redis,所以不需要 sticky session。但流式输出时,如果负载均衡器不支持长连接,可能会中断,要确认 LB 的超时配置。

6.2 数据层高可用

PostgreSQL 做主从,用流复制,从库做只读查询和备份。故障切换可以用 Patroni 或云托管服务。Redis 用哨兵或集群模式,保证队列不丢。向量库如果选 qdrant,它自带 Raft 集群,配置 3 节点即可。

对象存储用 MinIO 集群或云 OSS,避免单点。storage 目录如果还是本地,多副本 api 会读不到其他节点上传的文件,必须换成共享存储。

6.3 监控与告警

生产环境必须上监控。基础指标用 Prometheus + Grafana,采集容器 CPU、内存、网络。应用指标关注 api 的 P99 延迟、worker 的队列长度、知识库索引成功率。日志用 Loki 或 ELK 集中收集,方便排查。

告警规则我一般设这几条:worker 队列长度超过 100 持续 5 分钟、api 错误率超过 1%、数据库连接数超过 80%、磁盘使用率超过 85%。这些能覆盖大部分故障场景。

6.4 备份与容灾

备份策略:数据库每天全量 + 实时 WAL 归档,storage 每天增量,向量库可以重建(只要有原始文档)。恢复演练每季度做一次,确保备份可用。容灾方面,如果预算允许,做跨机房主从,RPO 控制在分钟级。

我在实际运维中体会最深的一点是:高可用不是堆组件,而是消除单点 + 快速恢复。与其上复杂的集群,不如把备份和监控做扎实,出问题时能快速定位和恢复,这比追求 99.99% 的可用性更实际。很多故障不是架构不够复杂,而是没人知道哪里出了问题。

最后分享一个小技巧:Dify 的.env里有个MIGRATION_ENABLED开关,多副本 api 场景下,只让一个副本执行 migration,其他副本设成 false,避免并发 migration 导致锁表。这个细节官方文档没强调,但生产环境很关键。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 11:26:51

大学生系统化学习Unity的路径与方法

1. 为什么大学生需要系统化的Unity学习路径刚接触Unity的大学生往往面临一个困境:知道这是个强大的游戏引擎,但不知道从哪开始学起。校园里可能开了几门相关课程,网上能找到零散的教程,YouTube上还有各种炫酷的效果演示——但这些…

作者头像 李华
网站建设 2026/10/15 11:26:37

若依Vue前端部署实战:Nginx配置、路径映射与生产环境避坑指南

1. 为什么“若依Vue入门”卡在部署这一步?——多数人忽略的环境认知断层“若依Vue入门——服务器部署篇”,这个标题看似平实,实则藏着一个高频痛点:大量开发者能跑通本地开发环境,却在最后一步——把 Vue 前端项目真正…

作者头像 李华
网站建设 2026/10/15 11:26:27

美发美容店会员管理系统开发与实战应用

1. 项目概述在美发美容行业经营了十几年,我见过太多同行因为会员管理混乱而流失客户。记得2015年我刚开店时,还在用纸质笔记本记录会员信息,经常出现积分算错、预约冲突的情况。直到后来自己开发了一套会员管理系统,才真正解决了这…

作者头像 李华
网站建设 2026/10/15 11:26:17

长安链从零到一部署:证书、配置与节点启动全攻略

简介:这是一份面向区块链开发与运维人员的长安链部署实战手册,定位于帮助读者从零开始完成长安链区块链系统的环境搭建与源码部署。内容围绕直播回顾“如何通过长安链快速部署区块链系统”展开,覆盖Git、Golang、Docker、GLIBC_2.18等环境依赖…

作者头像 李华
网站建设 2026/10/15 11:26:06

React Native集成鸿蒙开发实战:原生组件桥接与踩坑指南

做React Native(RN)的开发者,这两年大概率会越来越多地听到一个话题:如何在RN项目里去开发鸿蒙(HarmonyOS)组件。鸿蒙是一款面向全场景的分布式操作系统,现在已经铺到手机、平板、车机、智能家居…

作者头像 李华