Docker

在Docker容器中运行Chroma#

您可以在Docker容器中运行Chroma服务器,并使用HttpClient访问它。

如果您在生产环境中使用Chroma,请填写此表单,我们将把您添加到一个专门支持生产用户的Slack工作区。我们很乐意帮助您思考系统的设计,或者如果您适合我们即将推出的分布式云服务。

如果您在运行Chroma服务器的容器之外的单独容器中使用客户端,您可能只需要thin-client包

您可以从Docker HubChroma GitHub容器注册表获取Chroma Docker镜像。

Command Line

您也可以从Chroma GitHub仓库中的Dockerfile自行构建Docker镜像。

Command Line

然后,可以将Chroma客户端配置为连接到Docker容器中运行的服务器。

python

Docker身份验证#

默认情况下,Docker镜像将以无身份验证方式运行。在客户端/服务器模式下,Chroma支持以下身份验证方法:

  • RFC 7617 基本认证,使用user:password base64编码的Authorization头。
  • 静态认证令牌在Authorization: Bearer <token>X-Chroma-Token: <token>头中。

您可以在身份验证指南中了解更多关于Chroma身份验证的信息。

加密的用户:密码身份验证#

服务器设置#

生成服务器端凭证#

要生成密码哈希,请运行以下命令:

Command Line

这将为密码admin生成bcrypt密码哈希,用于用户admin,并将其放入当前工作目录中的server.htpasswd文件中。它将看起来像admin:<password hash>

运行服务器#

创建一个.chroma_env文件,并在其中设置以下环境变量:

text

然后,运行Chroma容器,并使用--env-file标志传递您的.chroma_env

Command Line

客户端设置#

在您的客户端环境中,将CHROMA_CLIENT_AUTH_CREDENTIALS变量设置为用户:密码组合(在此示例中为admin:admin):

shell

安装python-dotenv。这将允许我们轻松地从.chroma_env中读取环境变量:

shell

我们将使用Chroma的Settings对象在客户端上定义身份验证方法。

python

静态API令牌认证#

服务器设置#

例如,如果您希望静态API令牌为“test-token”,请将以下环境变量添加到您的.chroma_env中。这将设置Authorization: Bearer test-token作为您的认证头。

text

如果您不想使用默认的Authorization: Bearer <token>头,而是希望使用自定义头,例如X-Chroma-Token: test-token,您可以设置CHROMA_AUTH_TOKEN_TRANSPORT_HEADER环境变量:

text

然后,运行Chroma服务器:

Command Line

要配置多个令牌并将其用于基于角色的访问控制(RBAC),请使用类似的文件和以下环境变量:

text

在这种情况下,您需要设置一个卷以允许Chroma Docker容器使用您的authz.yaml文件:

Command Line

客户端设置#

安装python-dotenv。这将允许我们轻松地从.chroma_env中读取环境变量:

shell

我们将使用Chroma的Settings对象在客户端定义认证方法。

python

如果您使用自定义的CHROMA_AUTH_TOKEN_TRANSPORT_HEADER(如X-Chroma-Token),请将其添加到您的Settings中:

python