跳至主要内容

Rivet Server Docker镜像

Rivet CLI中的serve命令可作为Docker镜像使用,允许您在容器化环境中运行Rivet服务器。

快速入门

# Start a server on port 3000 with a mounted project directory
docker run -p 3000:3000 -v /path/to-project:/project abrennekeironclad/rivet-server:latest

描述

Docker镜像提供了与serve命令相同的功能,但被打包在容器中以便于部署和环境一致性。默认情况下,服务器在容器内的3000端口上运行。

有关serve命令的更多信息,请参阅Rivet CLI文档

使用方法

基本用法

挂载您的项目目录并暴露服务器端口:

docker run \
-p 3000:3000 \
-v /path/to/project:/project \
abrennekeironclad/rivet-server:latest

使用OpenAI配置

要使用OpenAI功能,请将您的API密钥作为环境变量提供:

docker run \
-p 3000:3000 \
-v /path/to/project:/project \
-e OPENAI_API_KEY=your-api-key \
abrennekeironclad/rivet-server:latest

自定义端口

要使用不同的端口:

docker run \
-p 8080:3000 \
-v /path/to/project:/project \
abrennekeironclad/rivet-server:latest

传递额外参数

要向服务器传递额外参数,请将它们附加到命令的末尾:

docker run \
-p 3000:3000 \
-v /path/to/project:/project \
abrennekeironclad/rivet-server:latest --dev --allow-specifying-graph-id

构建自定义镜像

您可以在运行时挂载项目之外,还可以创建包含Rivet项目文件的自定义Docker镜像。这在您想要以下情况时非常有用:

  • 将您的项目文件直接打包到镜像中
  • 构建一个自包含的部署工件
  • 设置默认CLI参数

基础示例

FROM abrennekeironclad/rivet-server:latest

# Copy project files into the image
COPY ./my-project-dir /project

# Optionally set default CLI arguments
CMD ["--dev", "--allow-specifying-graph-id"]

然后,构建并运行镜像:

docker build -t my-rivet-server .
docker run -p 3000:3000 my-rivet-server

环境变量

查看Rivet CLI文档获取可与服务器一起使用的环境变量列表。

卷挂载

容器期望您的Rivet项目文件被挂载到容器内的/project目录。挂载的目录应包含Rivet项目文件以及项目所需的任何其他文件,例如任何.rivet-data文件。

示例

使用Docker Compose

version: '3'
services:
rivet:
image: abrennekeironclad/rivet-server:latest
ports:
- '3000:3000'
volumes:
- ./my-project:/project
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}

使用Kubernetes

您可以使用项目的ConfigMap文件和环境变量配置将Rivet服务器部署到Kubernetes。

apiVersion: v1
kind: ConfigMap
metadata:
name: rivet-project
data:
project.rivet-project: |
# Your project file contents here
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: rivet-server
spec:
replicas: 1
selector:
matchLabels:
app: rivet-server
template:
metadata:
labels:
app: rivet-server
spec:
containers:
- name: rivet-server
image: abrennekeironclad/rivet-server:latest
ports:
- containerPort: 3000
volumeMounts:
- name: project-volume
mountPath: /project
volumes:
- name: project-volume
configMap:
name: rivet-project
---
apiVersion: v1
kind: Service
metadata:
name: rivet-server
spec:
selector:
app: rivet-server
ports:
- port: 80
targetPort: 3000
type: ClusterIP