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://<主机名_1>:<端口>/1,对于 部署 BREDIS_URI 可以设置为 redis://<主机名_1>:<端口>/2

      12 是同一实例内不同的数据库编号,但 <主机名_1> 是共享的。不同的部署不能使用相同的数据库编号

    2. DATABASE_URI:Postgres 连接详细信息。Postgres 将用于存储助手、线程、运行记录,持久化线程状态和长期记忆,并以“仅执行一次”的语义管理后台任务队列的状态。DATABASE_URI 的值必须是有效的 Postgres 连接 URI

      共享 Postgres 实例

      多个自托管部署可以共享同一个 Postgres 实例。例如,对于 部署 ADATABASE_URI 可以设置为 postgres://<用户>:<密码>@/<数据库名_1>?host=<主机名_1>,对于 部署 BDATABASE_URI 可以设置为 postgres://<用户>:<密码>@/<数据库名_2>?host=<主机名_1>

      <数据库名_1>数据库名_2 是同一实例内不同的数据库,但 <主机名_1> 是共享的。不同的部署不能使用相同的数据库

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

    4. LANGGRAPH_CLOUD_LICENSE_KEY:(如果使用 Enterprise)LangGraph 平台许可证密钥。此密钥将在服务器启动时用于一次性身份验证。
    5. LANGSMITH_ENDPOINT:要将跟踪信息发送到 自托管的 LangSmith 实例,请将 LANGSMITH_ENDPOINT 设置为自托管 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 命令。

这将在端口 8123 上启动一个 LangGraph 服务器(如果你想更改此端口,可以通过修改 langgraph-api 服务中的端口来实现)。你可以通过运行以下命令来测试应用程序是否正常运行:

curl --request GET --url 0.0.0.0:8123/ok
假设一切运行正常,你应该会看到类似如下的响应:

{"ok":true}

Comments