从本地图代码到生产级 LangGraph Platform 部署——深度讲解 4 个必要文件、LangGraph CLI 构建流程、Docker 容器化与 docker-compose 多服务编排。
LangGraph Platform 是 LangChain 提供的用于将 LangGraph 应用部署为生产级服务的平台。它提供了 REST API 接口、持久化存储、流式输出支持,以及对话线程管理等能力。
本节以 Module 5 构建的 task_mAIstro 应用为例,展示如何将一个本地图代码打包并部署为可供外部访问的服务。
本地运行图时,状态存在内存中(InMemoryStore),进程重启数据消失,且无法被其他客户端访问。LangGraph Platform 将图包装为 HTTP 服务,用 PostgreSQL 做持久化存储,用 Redis 做消息队列,支持多用户、多线程、断线重连的生产场景。
要创建一个 LangGraph Platform 部署,需要在 module-6/deployment/ 目录下准备以下 4 个文件:
LangGraph API 配置文件,声明要部署的图、路径映射与运行环境。
应用的核心逻辑文件,包含图的节点、边、编译代码(从 Module 5 迁移)。
Python 依赖列表,LangGraph CLI 在构建 Docker 镜像时自动安装这些依赖。
运行时环境变量(API 密钥、数据库 URI 等),通过文件或 compose 传入容器。
// langgraph.json — 声明图的路径和 Python 版本
{
"graphs": {
"task_maistro": "./task_maistro.py:graph"
},
"python_version": "3.11",
"dependencies": ["."]
}
格式为 "图名称": "文件路径:图变量名"。部署后,图名称成为 API 端点路径的一部分。
langgraph
langchain-deepseek
trustcall
langchain-core
python-dotenv
module-6/deployment/ 目录已包含这 4 个文件的完整示例,可直接参考。其中 docker-compose-example.yml 需要复制并填入实际的环境变量后使用。
LangGraph CLI 是 LangChain 提供的命令行工具,用于将图代码打包为 Docker 镜像(即 LangGraph Server 容器)。
pip install -U langgraph-cli
# 进入部署目录
cd module-6/deployment
# 构建 Docker 镜像,-t 指定镜像名称
langgraph build -t my-image
langgraph build 会读取当前目录下的 langgraph.json,自动:
requirements.txt 中的所有依赖运行 langgraph build 前需确保本地已安装并启动 Docker Desktop。构建过程需要网络访问以拉取基础镜像。
LangGraph Server 依赖两个外部服务作为基础设施:
| 服务 | 用途 | 配置参数 |
|---|---|---|
| PostgreSQL | 持久化存储图状态(Checkpointer)和 Store 数据,重启后数据不丢失 | DATABASE_URI(如 postgresql://user:pass@host/db) |
| Redis | 消息队列,支持流式输出和异步任务调度 | REDIS_URI(如 redis://localhost:6379) |
# 如果 Redis 和 PostgreSQL 已在别处运行,直接启动 API 容器
docker run \
--env-file .env \
-p 8123:8000 \
-e REDIS_URI="redis://localhost:6379" \
-e DATABASE_URI="postgresql://user:pass@localhost/langgraph" \
-e LANGSMITH_API_KEY="lsv2_..." \
my-image
启动后,LangGraph Server 默认监听容器内的 8000 端口,通过 -p 8123:8000 映射到主机 8123 端口。
如果没有独立的 Redis/PostgreSQL,可以用 docker-compose.yml 一键启动全部三个服务:
# docker-compose.yml 中定义的三个服务
services:
langgraph-redis:
image: redis:6 # 使用官方 Redis 镜像
ports: ["6379:6379"]
langgraph-postgres:
image: postgres:16 # 使用官方 PostgreSQL 镜像
environment:
POSTGRES_DB: langgraph
POSTGRES_USER: langgraph
POSTGRES_PASSWORD: langgraph
ports: ["5433:5432"]
langgraph-api:
image: ${IMAGE_NAME} # 使用 langgraph build 构建的镜像
ports: ["8123:8000"]
depends_on:
langgraph-redis: { condition: service_healthy }
langgraph-postgres: { condition: service_healthy }
env_file: .env # 从 .env 文件读取 API 密钥等环境变量
docker-compose-example.yml 为 docker-compose.yml.env 文件中填入 IMAGE_NAME、LANGSMITH_API_KEY、DEEPSEEK_API_KEYcd module-6/deployment
docker compose up
langgraph-api 容器设置了 depends_on 条件为 service_healthy,这意味着 LangGraph Server 只有在 Redis 和 PostgreSQL 都通过健康检查后才会启动,避免因依赖服务未就绪导致的启动失败。
| 维度 | 自托管(Self-hosted) | LangGraph Cloud |
|---|---|---|
| 基础设施 | 自行维护 Redis、PostgreSQL、Docker | LangChain 管理,无需关心底层 |
| 数据控制 | 完全控制,数据不离开自己的服务器 | 数据托管在 LangChain 云端 |
| 部署复杂度 | 需要 DevOps 能力 | 一键部署(通过 LangSmith 控制台) |
| 成本模型 | 按自有服务器成本计费 | 按 API 调用量计费 |
| 适用场景 | 合规要求严格、数据敏感的企业场景 | 快速原型、中小型应用 |
| LangGraph CLI | langgraph build + docker compose up | 直接在 LangSmith 界面点击部署 |
后续 Lesson 2(Connecting)使用的 URL https://langchain-academy-*.langgraph.app 是 LangGraph Cloud 上已部署好的 task_mAIstro 实例,学员无需自行部署即可直接连接体验完整的生产级 API。