如何自托管部署 LangGraph¶
本操作指南将引导您如何从现有的 LangGraph 应用程序创建 Docker 镜像,以便您可以在自己的基础设施上部署它。
工作原理¶
选择自托管部署选项后,您将负责管理基础设施,包括设置和维护必要的数据库、Redis 实例以及其他服务。
您需要完成以下操作:
- 在您自己的基础设施上部署 Redis 和 Postgres 实例。
- 使用 LangGraph CLI 构建一个包含 LangGraph 服务器的 Docker 镜像。
- 部署一个 Web 服务器,该服务器将运行 Docker 镜像并传入必要的环境变量。
环境变量¶
您最终需要将以下环境变量传入 LangGraph Deploy 服务器:
REDIS_URI
: Redis 实例的连接详情。Redis 将用作发布/订阅代理,以实现后台运行的实时输出流。DATABASE_URI
: Postgres 连接详情。Postgres 将用于存储助手、会话、运行、持久化会话状态和长期记忆,并以“精确一次”的语义管理后台任务队列的状态。LANGSMITH_API_KEY
:(如果使用 [Self-Hosted Lite])LangSmith API 密钥。这将在服务器启动时进行一次身份验证。LANGGRAPH_CLOUD_LICENSE_KEY
:(如果使用 Self-Hosted Enterprise)LangGraph 平台许可证密钥。这将在服务器启动时进行一次身份验证。
构建 Docker 镜像¶
请阅读 应用程序结构 指南,了解如何构建您的 LangGraph 应用程序。
如果应用程序结构正确,您可以使用 LangGraph Deploy 服务器构建 Docker 镜像。
要构建 Docker 镜像,您首先需要安装 CLI:
然后您可以使用:
这将构建一个包含 LangGraph Deploy 服务器的 Docker 镜像。-t my-image
用于为镜像标记名称。
运行此服务器时,您需要传入三个环境变量:
在本地运行应用程序¶
使用 Docker¶
如果您想在不单独设置 Redis 和 Postgres 实例的情况下快速运行,可以使用此 Docker Compose 文件。
注意
- 您需要将
my-image
替换为上一步(来自langgraph build
)中构建的镜像名称,并且应为REDIS_URI
、DATABASE_URI
和LANGSMITH_API_KEY
提供适当的值。 - 如果您的应用程序需要额外的环境变量,您也可以以类似的方式传入。
- 如果使用 Self-Hosted Enterprise,您必须提供
LANGGRAPH_CLOUD_LICENSE_KEY
作为额外的环境变量。
使用 Docker Compose¶
volumes:
langgraph-data:
driver: local
services:
langgraph-redis:
image: redis:6
healthcheck:
test: redis-cli ping
interval: 5s
timeout: 1s
retries: 5
langgraph-postgres:
image: postgres:16
ports:
- "5433:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- langgraph-data:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U postgres
start_period: 10s
timeout: 1s
retries: 5
interval: 5s
langgraph-api:
image: ${IMAGE_NAME}
ports:
- "8123:8000"
depends_on:
langgraph-redis:
condition: service_healthy
langgraph-postgres:
condition: service_healthy
env_file:
- .env
environment:
REDIS_URI: redis://langgraph-redis:6379
LANGSMITH_API_KEY: ${LANGSMITH_API_KEY}
POSTGRES_URI: postgres://postgres:postgres@langgraph-postgres:5432/postgres?sslmode=disable
然后,您可以在同一文件夹中运行 docker compose up
并使用此 Docker Compose 文件。
这将启动 LangGraph Deploy,侦听端口 8123
(如果要更改此端口,可以通过更改 langgraph-api
卷中的端口来修改)。
您可以通过检查以下内容来测试应用程序是否已启动:
假设一切运行正常,您应该会看到类似以下的响应: