one-api采用docker-compose离线部署找不到cl100k_base.tiktoken解决办法

one-api采用docker-compose离线部署方法:

1.先在能上网的主机按照github上说明装好one-api

2.将3个镜像打包

docker save -o one-api.tar justsong/one-api

docker save -o pgvector.tar pgvector/pgvector

docker save -o mysql.tar mysql

3.将镜像复制到离线主机,运行

docker load -i one-api.tar

docker load -i pgvector.tar

docker load -i mysql.tar

4.将 docker-compose.yml复制到离线主机,修改内容如下:


version: '3.4'

services:
  one-api:
    image: "${REGISTRY:-docker.io}/justsong/one-api:latest"
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3000:3000"
    volumes:
      - ./data/oneapi:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=oneapi:123456@tcp(db:3306)/one-api  # 修改此行,或注释掉以使用 SQLite 作为数据库
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=random_string  # 修改为随机字符串
      - TZ=Asia/Shanghai
#      - NODE_TYPE=slave  # 多机部署时从节点取消注释该行
#      - SYNC_FREQUENCY=60  # 需要定期从数据库加载数据时取消注释该行
#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # 多机部署时从节点取消注释该行
    depends_on:
      - redis
      - db
    #healthcheck:
      #test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      #interval: 30s
      #timeout: 10s
      #retries: 3

  redis:
    image: "${REGISTRY:-docker.io}/redis:latest"
    container_name: redis
    restart: always

  db:
    image: "${REGISTRY:-docker.io}/mysql:8.2.0"
    restart: always
    container_name: mysql
    volumes:
      - ./data/mysql:/var/lib/mysql  # 挂载目录,持久化存储
    ports:
      - '3307:3306'
    environment:
      TZ: Asia/Shanghai   # 设置时区
      MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码
      MYSQL_USER: oneapi   # 创建专用用户
      MYSQL_PASSWORD: '123456'    # 设置专用用户密码
      MYSQL_DATABASE: one-api   # 自动创建数据库
                                                 

5.运行

docker-compose up -d

等待10秒,如果容器一直启动不了反复重启,查看当前目录的logs目录下的日志,其中如果包含报错信息:

failed to get gpt-3.5-turbo token encoder: get "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken":dial tcp: lookup open..............

说明找不到cl100k_base.tiktoken文件(因为没联网)

6.解决办法

(1)先到网上下载https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken,复制到离线主机某个目录:path/to/file

(2)将cl100k_base.tiktoken改名为9b5ad71b2ce5302211f9c61530b329a4922fc6a4

(3)在docker-compose.yml文件中one-api下的volumes中增加如下:

- path/to/file:/app/tiktokens

在environment下增加:

- TIKTOKEN_CACHE_DIR=/app/tiktokens

7.重新运行

docker-compose down

docker-compose up -d

应该可以了

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Compose 是一个用于定义和运行 Docker 容器化应用程序的工具,它允许用户使用简单的 YAML 文件来描述多个容器之间的关系和依赖关系。而 "docker-compose-linux-x86_64.64" 镜像是 Docker Compose 在 Linux x86_64 架构上的镜像。下面将对它进行详细说明: 1. 架构:这个镜像是构建在 Linux x86_64 架构上的,也就是说它适用于运行在基于 Intel 或 AMD 的 64 位处理器上的操作系统。 2. 功能:docker-compose-linux-x86_64.64 镜像是一个可执行文件,其中包含了 Docker Compose 的所有功能。它允许用户通过命令行界面或者编写的 YAML 文件来管理和组织多个 Docker 容器的运行。 3. 安装:要使用这个镜像,你需要先安装 Docker 引擎,因为 Docker Compose 依赖于 Docker 引擎来创建和管理容器。在安装 Docker 引擎后,你可以从 Docker 官方仓库中拉取 docker-compose-linux-x86_64.64 镜像,然后将它保存到你的系统中。 4. 使用:一旦你成功安装了 Docker 引擎和 docker-compose-linux-x86_64.64 镜像,你就可以使用 "docker-compose" 命令来管理 Docker 容器了。你可以在命令行中直接运行它,也可以将所需的 Docker Compose 命令以脚本的形式写在 YAML 文件中并执行。 总结来说,docker-compose-linux-x86_64.64 镜像是一个专门用于 Linux x86_64 架构上的 Docker Compose 工具。它允许用户以便捷的方式定义和管理多个 Docker 容器的关系和依赖,并且提供了命令行和 YAML 文件两种使用方式。使用这个镜像,你可以更加高效地部署和运行基于容器化的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值