1. 现状

公司内部服务器,机器信息如下:
Linux ecs-shrsp-0001 4.19.90-89.23.v2401.ky10.aarch64
机器无法连接互联网,无内部建设镜像源。
需求:在机器上运行 oneapi 服务。

2. 具体操作

2.1 本地机器运行 oneapi

先在本地机器上运行 oneapi 镜像(包含 oneapi 和 mysql)
docker-compose.yml 文件内容如下:

version: '3.8'

services:
  db:
    image: mysql:8.0.36
    container_name: oneapi-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: oneapimmysql
      MYSQL_DATABASE: oneapi
    ports:
      - "3306:3306"
    networks:
      - fastgpt
    volumes:
      - ./mysql-data:/var/lib/mysql

  one-api:
    image: ghcr.io/songquanpeng/one-api:v0.6.7
    container_name: one-api
    restart: always
    depends_on:
      - db
    ports:
      - "8081:3000" #代理到8081端口,可根据需求调整
    networks:
      - fastgpt
    environment:
      - SQL_DSN=root:oneapimmysql@tcp(db:3306)/oneapi
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data

networks:
  fastgpt:

2.2 docker save 本地镜像

参考命令:docker save -o mynginx.tar mynginx:latest #这将 mynginx:latest 镜像保存为 mynginx.tar 文件。

2.3 服务器 docker load 上传镜像

参考命令:docker load -i mynginx.tar

2.4 服务器运行 docker-compose.yml 文件

docker-compose.yml 文件内容见上方。
此时戏剧性的一幕出现了,one-api 容器疯狂报错,错误信息如下:
在这里插入图片描述

原因:Token 数量计算库需要联网下载词库文件。
可是此时服务器无法连接互联网,尝试下载 cl100k_base.tiktoken 文件挂载到容器中,失败!
重新查看本地机器运行起来的 one-api,发现/tmp 下有添加文件
在这里插入图片描述

拷贝文件 9b5…、fb3…(到当前目录下encoders 文件夹中),上传到服务器运行起来的 oneapi 中
在这里插入图片描述

命令:

# 复制encoders文件夹内的所有文件到目标容器目录
docker cp ./encoders/. one-api:/tmp/data-gym-cache

重新启动 one-api 问题解决!!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐