基于Docker Compose部署One-API的详细指南

部署One-API的详细指南

前言

one-api是一个开源项目(https://github.com/songquanpeng/one-api),旨在简化API的开发与管理过程。这个项目提供了一个全面的解决方案,特别适用于需要高效管理API接口的开发者和团队。以下是该项目的一些核心特点和功能:

  • 多模型支持:它是一个大模型接口管理和分发系统,能够支持多种主流的AI模型接口,包括但不限于OpenAI、Azure、Anthropic Claude、Google PaLM系列、智谱ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360智脑及腾讯混元等,实现了接口的整合与统一管理。
  • 一键部署与开箱即用:通过Docker镜像形式,one-api可以实现快速部署,降低了使用门槛,使得用户能够迅速搭建起自己的API管理系统。
  • API管理功能:包括文档自动生成、接口测试、版本控制、权限管理等,这些功能有助于提升API的开发效率与维护质量,确保API服务的稳定性和安全性。
  • 高性能与轻量级:基于Go语言开发,确保了系统的高性能运行和资源的高效利用,适合微服务架构下的快速响应需求。
  • 持续更新与发展:项目活跃,不断有新特性的加入和优化,如对响应解析逻辑的重构以支持多种格式,以及对新兴模型如GPT-4的计费方案的支持等。

在现代应用开发中,容器化和微服务架构已经成为主流。Docker Compose 作为一个工具,能够帮助我们轻松管理和编排多容器应用。本指南将详细介绍如何使用Docker Compose部署One-API。

1.环境准备

获取root权限:

sudo -i

在开始之前,请确保您的系统已经安装了以下软件:

  • Docker
  • Docker Compose

您可以通过以下命令检查是否已安装:

docker --version
docker-compose --version

如果没有安装,请按照以下步骤进行安装:

安装Docker

# 更新包索引
sudo apt-get update# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装Docker Compose

# 下载Docker Compose二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

2. 创建项目目录

首先,我们需要为我们的项目创建一个目录:

mkdir one-api
cd one-api

3. 编写Docker Compose文件

在项目目录中创建一个名为 docker-compose.yml 的文件:

touch docker-compose.yml

在yml文件中添加以下内容:

version: '3.4'services:one-api:image: "${REGISTRY:-docker.io}/justsong/one-api:latest"container_name: one-apirestart: alwayscommand: --log-dir /app/logsports:- "3000:3000"volumes:- ./data/oneapi:/data- ./logs:/app/logsenvironment:- 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- dbhealthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3redis:image: "${REGISTRY:-docker.io}/redis:latest"container_name: redisrestart: alwaysdb:image: "${REGISTRY:-docker.io}/mysql:8.2.0"restart: alwayscontainer_name: mysqlvolumes:- ./data/mysql:/var/lib/mysql  # 挂载目录,持久化存储ports:- '3306:3306'environment:TZ: Asia/Shanghai   # 设置时区MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码MYSQL_USER: oneapi   # 创建专用用户MYSQL_PASSWORD: '123456'    # 设置专用用户密码MYSQL_DATABASE: one-api   # 自动创建数据库

或者不编写Docker Compose文件,直接拉取整个代码,代码中有docker-compose.yml:

git clone https://github.com/songquanpeng/one-api.git

4. 构建和启动容器

# 目前支持 MySQL 启动,数据存储在 ./data/mysql 文件夹内
docker-compose up -d# 查看部署状态
docker-compose ps

5.访问

地址栏输入链接:

ip:3000

管理员登录:

用户名:root
初始密码:123456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IO模型:同步阻塞、同步非阻塞、同步多路复用、异步非阻塞

目录 stream和channel对比 同步、异步、阻塞、非阻塞 线程读取数据的过程 同步阻塞IO 同步非阻塞IO 同步IO多路复用 异步IO 优缺点对比 stream和channel对比 stream不会自动缓冲数据,channel会利用系统提供的发送缓冲区、接收缓冲区。stream仅支持阻塞API&am…

轻松拿捏C语言——【字符函数】字符分类函数、字符转换函数

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 感谢 目录👑 一、字符分类函数🌙 二、字符转换函数…

hive3从入门到精通(二)

第15章:Hive SQL Join连接操作 15-1.Hive Join语法规则 join分类 在Hive中,当下版本3.1.2总共支持6种join语法。分别是: inner join(内连接)left join(左连接)right join(右连接)…

Python学习——— tupple

Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(…

力扣HOT100 - 136. 只出现一次的数字

解题思路: class Solution {public int singleNumber(int[] nums) {int single 0;for (int num : nums) {single ^ num;}return single;} }

基于卷积神经网络的交通标志识别(pytorch,opencv,yolov5)

文章目录 数据集介绍:resnet18模型代码加载数据集(Dataset与Dataloader)模型训练训练准确率及损失函数:resnet18交通标志分类源码yolov5检测与识别(交通标志) 本文共包含两部分, 第一部分是用re…

回溯算法06(总结+leetcode332,51,37)

参考资料: https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E6%80%BB%E7%BB%93.html 力扣这三题暂时不在本篇笔记中贴代码了,有兴趣的可参考332.重新安排形成、N皇后、解数独 总结: 画树形图分析题目 用途:回溯算法是用 递归实现…

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…

win11 wsl ubuntu24.04

win11 wsl ubuntu24.04 一:开启Hyper-V二:安装wsl三:安装ubuntu24.04三:桥接模式,固定IP四:U盘使用五:wsl 从c盘迁移到其它盘参考资料 一:开启Hyper-V win11家庭版开启hyper-v 桌面…

Pytorch-01 框架简介

智能框架概述 人工智能框架是一种软件工具,用于帮助开发人员构建和训练人工智能模型。这些框架提供了各种功能,如定义神经网络结构、优化算法、自动求导等,使得开发人员可以更轻松地实现各种人工智能任务。通过使用人工智能框架,…

LangChain - Tool Calling 工具调用

文章目录 介绍组件1、ChatModel.bind_tools(...)2、AIMessage.tool_calls3、create_tool_calling_agent() 三、LangGraphwith_structured_output 四、结论 本文翻译整理自:Tool Calling with LangChain https://blog.langchain.dev/tool-calling-with-langchain/ TL…

汽车液态锂电池过充时,有怎样的表现,或者对电池有怎样的危害?

标签: 汽车液态锂电池过充的表现与危害; 电池过充; 汽车液态锂电池过充的表现与危害 液态锂电池在过充状态下,会出现一系列不良表现,并且对电池本身以及使用安全造成严重危害。以下是详细的分析: 1. 过充的表现 电压升高:在过充过程中,电池电压会超过其设计的最大电…

【MySQL精通之路】MySQL-环境变量

本节列出了MySQL直接或间接使用的环境变量。 其中大部分也可以在本手册的其他地方找到。 命令行上的选项优先于选项文件和环境变量中指定的值,选项文件中的值优先于环境变量中的值。 在许多情况下,最好使用配置文件而不是环境变量来修改MySQL的行为。…

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。 模块“Upgrade”启动失败。 未能启动虚拟机。

问题: 虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。 模块“Upgrade”启动失败。 未能启动虚拟机。 分析: 该虚拟机环境之前使用的VMware版本与你所使用的VMware版本不一致。大概率你使用的是刚从别人电脑里拷过来的虚拟机环境。 解决&…

开发需要知道的敏捷开发理念

敏捷宣言和原则 敏捷软件开发宣言 敏捷软件开发宣言(Agile Manifesto)是敏捷开发方法的核心指导原则,由17位软件开发专家在2001年共同起草。该宣言强调了在软件开发过程中对某些价值观的优先级: 个体和互动高于流程和工具&#…

游戏后台开发技术全面解析

在这个数字时代,游戏产业已经成为全球最受欢迎的娱乐方式之一。从简单的手机游戏到复杂的大型多人在线角色扮演游戏(MMORPG),游戏的世界正变得越来越丰富和多样化。而这一切的背后,都离不开强大的游戏后台技术支持。在…

项目日记(3) boost搜索引擎

目录 1. 准备工作 2. 搜索初始化 3. 搜索部分 4. 对content部分处理 5. 服务器编写 前言: 上次在项目日记(2)写了index索引, 这次就可以进行search搜索了. 不多说快看. 先点个一键三联. 蟹蟹!!! 1. 准备工作 后面需要倒排索引的结构体, 先准备好. words是后面一个文档里面…

三丰云云服务器测评

三丰云是一家知名的云计算服务提供商,提供免费虚拟主机和免费云服务器等多种云计算服务。这些服务深受广大用户的喜爱,因为它们可以帮助用户轻松地搭建网站、应用程序等,同时无需购买昂贵的硬件设备。 对于初学者来说,使用三丰云…

Java重写

方法重写的意义 在java中,子类可以继承父类中的方法,而不需要重新编写相同的方法,但是有时子类并不想原封不动的继承父类方法,需要做一定的修改,这时候就需要使用方法重写 方法重写的定义 在继承的前提下 子类可以根据…

UI面试手册

UI面试手册 薪资:6~9k 高级:8~15k 岗位职责: 负责公司品牌形象及产品相关海报、宣传画等创意设计工作;负责公司日常宣传、营销广告、策划设计制作、产品设计和包装设计等工作;配合国内外广告投放物料设计,按进度要求…