Skip to content

如何部署独立容器

在部署之前,请查阅独立容器部署选项的概念性指南

先决条件

  1. 使用LangGraph CLI在本地测试您的应用程序(本地测试)。
  2. 使用LangGraph CLI构建Docker镜像(即langgraph build)。
  3. 以下环境变量是独立容器部署所必需的。

    1. REDIS_URI: 连接到Redis实例的连接详情。Redis将用作发布/订阅代理,以实现实时输出流。REDIS_URI的值必须是一个有效的Redis连接URI

      共享Redis实例

      多个自托管部署可以共享同一个Redis实例。例如,对于部署AREDIS_URI可以设置为redis://<hostname_1>:<port>/1,对于部署BREDIS_URI可以设置为redis://<hostname_1>:<port>/2

      12是同一实例中的不同数据库编号,但<hostname_1>是共享的。不能在同一部署中使用相同的数据库编号

    2. DATABASE_URI: PostgreSQL连接详情。PostgreSQL将用于存储助手、线程、运行、持久化线程状态和长期记忆,并管理后台任务队列的状态,具有“恰好一次”的语义。DATABASE_URI的值必须是一个有效的PostgreSQL连接URI

      共享PostgreSQL实例

      多个自托管部署可以共享同一个PostgreSQL实例。例如,对于部署ADATABASE_URI可以设置为postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>,对于部署BDATABASE_URI可以设置为postgres://<user>:<password>@/<database_name_2>?host=<hostname_1>

      <database_name_1>database_name_2是同一实例中的不同数据库,但<hostname_1>是共享的。不能在同一部署中使用相同的数据库

    3. LANGSMITH_API_KEY: (如果使用Lite)LangSmith API密钥。这将在服务器启动时一次性用于身份验证。

    4. LANGGRAPH_CLOUD_LICENSE_KEY: (如果使用Enterprise)LangGraph平台许可证密钥。这将在服务器启动时一次性用于身份验证。
    5. LANGSMITH_ENDPOINT: 要将跟踪发送到self-hosted LangSmith实例,请将LANGSMITH_ENDPOINT设置为self-hosted LangSmith实例的主机名。

Kubernetes (Helm)

使用此Helm图表将LangGraph服务器部署到Kubernetes集群中。

Docker

运行以下 docker 命令:

docker run \
    --env-file .env \
    -p 8123:8000 \
    -e REDIS_URI="foo" \
    -e DATABASE_URI="bar" \
    -e LANGSMITH_API_KEY="baz" \
    my-image

Note

  • 需要将 my-image 替换为您在先决条件步骤中构建的镜像名称(来自 langgraph build),并且应为 REDIS_URIDATABASE_URILANGSMITH_API_KEY 提供适当的值。
  • 如果您的应用程序需要额外的环境变量,可以以类似的方式传递它们。

Docker Compose

Docker Compose YAML 文件:

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 文件在同一文件夹中运行命令 docker compose up

这将启动一个 LangGraph 服务器,监听端口 8123(如果您想更改此端口,可以在 langgraph-api 中更改端口号)。您可以通过运行以下命令来测试应用程序是否健康:

curl --request GET --url 0.0.0.0:8123/ok

假设一切正常运行,您应该会看到如下响应:

{"ok":true}

Comments