agentic_huge_data_base / wiki
页面 LightRAG · 8.1 包结构与依赖·DeepWiki 中文全文译文

8.1 · 包结构与依赖(Package Structure and Dependencies)

轻量图谱增强检索 · 聚焦本章的模块关系、源码依据与实现要点。

项目LightRAG 章节8.1 状态全文译文 模块测试、发布与运维、文档对象与元数据、安装与启动、存储与持久化
源码线索
  • MANIFEST.in
  • lightrag/llm/binding_options.py
  • lightrag/tools/__init__.py
  • lightrag/tools/lightrag_visualizer/README-zh.md
  • lightrag/tools/lightrag_visualizer/README.md
  • lightrag/tools/lightrag_visualizer/__init__.py
  • lightrag/tools/lightrag_visualizer/assets/place_font_here
  • lightrag/tools/lightrag_visualizer/graph_visualizer.py
  • pyproject.toml
  • requirements-offline-llm.txt
模块标签
  • 测试、发布与运维
  • 文档对象与元数据
  • 安装与启动
  • 存储与持久化
  • 检索、召回与索引

章节正文

Docker Compose 部署

Docker Compose 部署

相关源文件

本章引用的主要源码文件:

  • Dockerfile
  • Dockerfile.lite
  • Makefile
  • docker-compose-full.yml
  • docker-compose.podman.yml
  • docker-compose.yml
  • docs/AdvancedFeatures.md
  • docs/DockerDeployment.md
  • docs/InteractiveSetup.md
  • env.docker-compose-full
  • scripts/setup/lib/file_ops.sh
  • scripts/setup/lib/presets.sh
  • scripts/setup/lib/prompts.sh
  • scripts/setup/lib/storage_requirements.sh
  • scripts/setup/lib/validation.sh
  • scripts/setup/setup.sh
  • scripts/setup/templates/memgraph.yml
  • scripts/setup/templates/milvus-gpu.yml
  • scripts/setup/templates/milvus.yml
  • scripts/setup/templates/mongodb.yml
  • scripts/setup/templates/neo4j.yml
  • scripts/setup/templates/opensearch.yml
  • scripts/setup/templates/postgres.yml
  • scripts/setup/templates/qdrant.yml
  • scripts/setup/templates/redis.yml
  • scripts/setup/templates/vllm-embed-gpu.yml
  • scripts/setup/templates/vllm-embed.yml
  • scripts/setup/templates/vllm-rerank-gpu.yml
  • scripts/setup/templates/vllm-rerank.yml
  • tests/test_interactive_setup/test_collect.py
  • tests/test_interactive_setup/test_generate.py
  • tests/test_interactive_setup/test_misc.py

LightRAG 代码库提供了一套基于 Docker 的复杂部署基础设施,能够处理从单容器执行到多服务堆栈的各种场景。该系统利用多阶段 Dockerfile、交互式设置向导和基于模板的生成系统,最终生成一个可用于生产环境的 docker-compose.final.yml 文件。

Docker 镜像与构建流程

LightRAG 维护了两个主要的 Dockerfile 变体,以在功能完整性和镜像大小之间取得平衡。

Dockerfile(完整版)

标准 Dockerfile 采用多阶段构建流程,以优化性能和安全性 Dockerfile:1-111

  1. 前端阶段:使用 oven/bun 构建基于 React 的 WebUI 资源 Dockerfile:6-17
  2. Python 构建阶段:使用 ghcr.io/astral-sh/uv 实现快速、并行的依赖解析。该阶段会安装系统依赖(如用于编译 wheel 的 Rust),并预先同步 Python 环境 Dockerfile:20-60
  3. 缓存预填充:执行 lightrag-download-cache 命令,将 tiktoken 数据预填充到 /app/data/tiktoken 目录,从而实现离线功能 Dockerfile:64-66
  4. 最终阶段:使用 python:3.12-slim 镜像,仅复制必要的虚拟环境和应用程序代码 Dockerfile:69-81
Dockerfile.lite

这是一个精简版本,适用于不需要外部解析器(如 MinerU 或 Docling)的环境,生成的镜像体积显著更小。

来源: Dockerfile:1-111docs/DockerDeployment.md:68-76

交互式设置向导

部署过程通过位于 scripts/setup/setup.sh 的 Bash 交互式向导进行管理。该向导会在主机端执行和容器端执行之间规范化配置。

向导架构与流程

该向导通过 make 目标调用,这些目标确保兼容 Bash 4+ 环境 Makefile:2-3

目标描述关键代码函数
make env-base配置大语言模型(LLM)、嵌入向量和重排序器。collect_base_config
make env-storage配置数据库后端(Postgres、Neo4j 等)。collect_storage_config
make env-server配置端口、认证和 SSL。collect_server_config
make env-validate校验 .env 语法和存储兼容性。validate_required_variables
向导管理的服务

当用户选择通过 Docker 运行某个服务(如 Neo4j 或 vLLM)时,向导会从 scripts/setup/templates/*.yml 中提取模板,并将服务定义注入到最终的 compose 文件中 scripts/setup/setup.sh:13-15

来源: Makefile:77-100scripts/setup/setup.sh:1-90docs/InteractiveSetup.md:1-49

配置规范化(主机 vs Compose)

LightRAG 部署的一个关键特性是运行时目标规范化。系统会区分 LIGHTRAG_RUNTIME_TARGET=hostcompose 两种模式 env.docker-compose-full:6

主机名转换

当 LightRAG 在容器内运行(compose 目标),但需要访问主机上运行的服务时,向导会自动将 localhost127.0.0.1 转换为 host.docker.internal scripts/setup/setup.sh:243-255

SSL 暂存

如果启用了 SSL,向导会"暂存"证书。它会将本地证书文件复制到 ./data/certs/ 目录,以便通过绑定挂载的方式将其挂载到容器的 /app/data/certs/ 路径下 scripts/setup/lib/file_ops.sh:85-107

图表:配置流向代码实体

下图展示了用户输入如何转换为代码级别的环境变量和 Docker 配置。

"向导输入到代码的映射"

LightRAG · 图表:配置流向代码实体 · 图 1
LightRAG · 图表:配置流向代码实体 · 图 1

来源: scripts/setup/setup.sh:243-255scripts/setup/lib/file_ops.sh:85-107env.docker-compose-full:1-30

Docker Compose 文件生成

系统使用 docker-compose.final.yml 作为主要的运行时定义文件。该文件不会手动编辑,而是由向导生成或合并。

服务模板

向导维护了一组用于托管服务的 YAML 模板。例如,postgres 模板包含健康检查,该检查使用 cat /proc/net/tcp 来确保在 lightrag 服务启动之前端口已处于活动状态 scripts/setup/templates/postgres.yml:7-13

依赖关系图

生成的堆栈使用带有 service_healthy 条件的 depends_on 来确保正确的启动顺序,特别是对于需要 etcdminio 的复杂向量数据库(如 Milvus)docker-compose-full.yml:38-49

图表:多服务数据流

此图展示了 LightRAG 容器与托管后端服务之间的关系。

"容器化服务架构"

LightRAG · 图表:多服务数据流 · 图 2
LightRAG · 图表:多服务数据流 · 图 2

来源: docker-compose-full.yml:4-49scripts/setup/templates/vllm-embed.yml:1-20docs/DockerDeployment.md:108-114

安全审计

在部署之前,系统会提供安全审计机制。命令 make env-security-check 会调用 scripts/setup/setup.sh --security-check

审计检查

审计器会校验多个关键安全参数:

  1. 认证:检查是否设置了 AUTH_ACCOUNTS scripts/setup/lib/validation.sh:152-163
  2. JWT 完整性:验证 TOKEN_SECRET 是否未使用默认值 scripts/setup/lib/validation.sh:156
  3. 白名单安全性:检查 WHITELIST_PATHS 是否包含过于宽松的模式 docs/DockerDeployment.md:102-106
  4. 插值风险:确保敏感密钥不包含 ${...} 语法,该语法可能通过环境变量注入被利用 scripts/setup/lib/validation.sh:146-150

来源: scripts/setup/lib/validation.sh:146-188docs/DockerDeployment.md:99-106Makefile:95-96