LangChain LangGraph
Module 1 Module 2 Module 3 Module 4 Module 5 Module 6
Module 6 · Production
1 6-1 Creating
2 6-2 Connecting
3 6-3 Double Texting
4 6-4 Assistant
HomeLangGraphModule 6 · Production6-1 Creating
📓 Notebook 📖 Explained
LANGGRAPH MODULE 6 · LESSON 1

Creating a Deployment

从本地图代码到生产级 LangGraph Platform 部署——深度讲解 4 个必要文件、LangGraph CLI 构建流程、Docker 容器化与 docker-compose 多服务编排。

1 LangGraph Platform 部署概述

LangGraph Platform 是 LangChain 提供的用于将 LangGraph 应用部署为生产级服务的平台。它提供了 REST API 接口、持久化存储、流式输出支持,以及对话线程管理等能力。

本节以 Module 5 构建的 task_mAIstro 应用为例,展示如何将一个本地图代码打包并部署为可供外部访问的服务。

LangGraph Platform 部署架构
┌─────────────────────────────────────────────┐
│ LangGraph Server (API) │ ← 处理 HTTP 请求,管理线程
├─────────────────────────────────────────────┤
│ task_mAIstro Graph (你的业务逻辑) │ ← 从 Python 文件加载
├─────────────────────────────────────────────┤
PostgreSQLRedis
│ 持久化 Checkpointer │ 消息队列/缓存 │
└─────────────────────────────────────────────┘
为什么需要 LangGraph Platform

本地运行图时,状态存在内存中(InMemoryStore),进程重启数据消失,且无法被其他客户端访问。LangGraph Platform 将图包装为 HTTP 服务,用 PostgreSQL 做持久化存储,用 Redis 做消息队列,支持多用户、多线程、断线重连的生产场景。

2 4 个必要文件详解

要创建一个 LangGraph Platform 部署,需要在 module-6/deployment/ 目录下准备以下 4 个文件:

langgraph.json

LangGraph API 配置文件,声明要部署的图、路径映射与运行环境。

task_maistro.py

应用的核心逻辑文件,包含图的节点、边、编译代码(从 Module 5 迁移)。

requirements.txt

Python 依赖列表,LangGraph CLI 在构建 Docker 镜像时自动安装这些依赖。

.env / docker-compose.yml

运行时环境变量(API 密钥、数据库 URI 等),通过文件或 compose 传入容器。

langgraph.json 配置示例

// langgraph.json — 声明图的路径和 Python 版本
{
  "graphs": {
    "task_maistro": "./task_maistro.py:graph"
  },
  "python_version": "3.11",
  "dependencies": ["."]
}

格式为 "图名称": "文件路径:图变量名"。部署后,图名称成为 API 端点路径的一部分。

requirements.txt 示例

langgraph
langchain-deepseek
trustcall
langchain-core
python-dotenv
deployment 目录结构

module-6/deployment/ 目录已包含这 4 个文件的完整示例,可直接参考。其中 docker-compose-example.yml 需要复制并填入实际的环境变量后使用。

3 LangGraph CLI:构建 Docker 镜像

LangGraph CLI 是 LangChain 提供的命令行工具,用于将图代码打包为 Docker 镜像(即 LangGraph Server 容器)。

安装 CLI

pip install -U langgraph-cli

构建 Docker 镜像

# 进入部署目录
cd module-6/deployment

# 构建 Docker 镜像,-t 指定镜像名称
langgraph build -t my-image

langgraph build 会读取当前目录下的 langgraph.json,自动:

  1. 下载适配 LangGraph Server 的基础镜像
  2. 安装 requirements.txt 中的所有依赖
  3. 将图代码复制进镜像
  4. 构建最终的可运行 Docker 镜像
前置要求

运行 langgraph build 前需确保本地已安装并启动 Docker Desktop。构建过程需要网络访问以拉取基础镜像。

4 Redis 与 PostgreSQL:基础设施配置

LangGraph Server 依赖两个外部服务作为基础设施:

服务用途配置参数
PostgreSQL 持久化存储图状态(Checkpointer)和 Store 数据,重启后数据不丢失 DATABASE_URI(如 postgresql://user:pass@host/db
Redis 消息队列,支持流式输出和异步任务调度 REDIS_URI(如 redis://localhost:6379

独立运行 LangGraph Server 容器(已有 Redis/PostgreSQL)

# 如果 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 端口。

5 docker-compose.yml:三服务编排

如果没有独立的 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 密钥等环境变量

启动步骤

  1. 复制 docker-compose-example.ymldocker-compose.yml
  2. .env 文件中填入 IMAGE_NAMELANGSMITH_API_KEYDEEPSEEK_API_KEY
  3. 运行以下命令启动全部服务:
cd module-6/deployment
docker compose up
depends_on 与健康检查

langgraph-api 容器设置了 depends_on 条件为 service_healthy,这意味着 LangGraph Server 只有在 Redis 和 PostgreSQL 都通过健康检查后才会启动,避免因依赖服务未就绪导致的启动失败。

6 自托管 vs LangGraph Cloud 对比

维度自托管(Self-hosted)LangGraph Cloud
基础设施自行维护 Redis、PostgreSQL、DockerLangChain 管理,无需关心底层
数据控制完全控制,数据不离开自己的服务器数据托管在 LangChain 云端
部署复杂度需要 DevOps 能力一键部署(通过 LangSmith 控制台)
成本模型按自有服务器成本计费按 API 调用量计费
适用场景合规要求严格、数据敏感的企业场景快速原型、中小型应用
LangGraph CLIlanggraph build + docker compose up直接在 LangSmith 界面点击部署
本课程的上下文

后续 Lesson 2(Connecting)使用的 URL https://langchain-academy-*.langgraph.app 是 LangGraph Cloud 上已部署好的 task_mAIstro 实例,学员无需自行部署即可直接连接体验完整的生产级 API。