前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【docker】自建一言API接口

【docker】自建一言API接口

作者头像
夜梦星尘
发布2024-08-20 19:22:40
910
发布2024-08-20 19:22:40
举报
文章被收录于专栏:夜梦星尘的折腾日记

本文发布于93天前,最后更新于93天前,其中的信息可能有所发展或是发生改变。

1. 前言

一言项目官网:Hitokoto – 一言

动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。如果可以,我们希望我们没有停止服务的那一天。 简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。 或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。 一言——关于我们

一言官方给出的API已经足够满足大部分场景的使用,但为什么还要自行部署呢?因为一言是公益性质的,所以在使用调用方面有限制。如果网站访问量大,不可避免的会请求过快,那么你服务器的IP有可能会被拉黑一段时间(然后就加载不出一言的内容了)。自建的话就没有这个担忧了~

夜梦星尘API:

2. 准备

在开始部署之前,你需要安装 docker 和 docker-compose。具体安装见:【docker】在服务器上安装 docker/docker-compose

你可以为服务器添加 1~2G 的 swap:手动添加 SWAP

3. 部署

新建文件夹:

代码语言:javascript
复制
mkdir -p /root/data/docker_data/hitokoto
cd /root/data/docker_data/hitokoto

创建配置文件:

代码语言:javascript
复制
vim docker-compose.yml

英文输入法下按 i 进入编辑模式后,粘贴:

代码语言:javascript
复制
version: '3'
networks:
  yemeng_hitokoto_api:
    driver: bridge

services:
  yemeng_hitokoto_api:
    networks:
      - yemeng_hitokoto_api
    image: hitokoto/api:release
    container_name: yemeng_hitokoto_api
    hostname: yemeng_hitokoto_api
    environment:
      NODE_ENV: production
      # 服务配置
      url: https://api.yemengstar.com # 请修改为您想要部署的域名
      api_name: yemengstarapi # 改一个好听的标识吧
      # requests.hosts: "['v1.hitokoto.cn']" # 改成你想统计的主机名列表
      redis.host: redis # Redis 连接地址,如果您使用本文件提供的 Redis 的话您无需修改此项
      redis.port: 6379 # Redis 连接端口
      # redis.password:
      # redis.database: 0
    ports:
      - 29999:8000
    links: 
      - redis
    restart: unless-stopped
    volumes: 
      - ./api:/usr/src/app/data
    
  redis:
    networks:
      - yemeng_hitokoto_api
    image: redis
    restart: unless-stopped
    container_name: redis
    hostname: redis
    volumes:
      - ./redis/redis.conf:/etc/redis/redis.conf # 一定要记得把 redis.conf 先放在这个位置哦
      - ./redis:/data
    command: redis-server /etc/redis/redis.conf
    # ports:
    #  - 6379:6379 # 如果有必要请取消注释本行

esc 后,输入:wq 保存退出。运行:

代码语言:javascript
复制
docker-compose up -d

4. 反向代理

你可以进行反向代理并开启 SSL,具体为你的域名 -> 服务器IP:,反代可以参考下面两篇文章:

【docker】反向代理神器 ——Nginx Proxy Manager 的安装

【docker】Nginx Proxy Manager 的使用

5. 使用

访问你的域名或者ip:29999就可以看到界面了:

具体的调用方法可以看官方的文档:语句接口 | 一言开发者中心

使用示例:使用示例 | 一言开发者中心

夜梦这里稍微演示一下,假设夜梦使用的域名是api.yemengstar.com,调用为一个分类是漫画的句子,那么调用的链接就是:https://api.yemengstar.com/?c=b。示例如下:

夜梦把它写成了HTML代码,需要的小伙伴们可以自取哦~

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>夜梦星尘的一言接口测试</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f4f4f9;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      margin: 0;
    }

    #hitokoto {
      background-color: #fff;
      padding: 20px;
      border-radius: 8px;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
      text-align: center;
    }

    #hitokoto_text {
      text-decoration: none;
      color: #007bff;
      font-size: 1.2em;
      transition: color 0.3s ease;
    }

    #hitokoto_text:hover {
      color: #0056b3;
    }

    #provider {
      margin-top: 10px;
      font-size: 0.9em;
      color: #666;
    }
  </style>
</head>

<body>
  <div id="hitokoto">
    <a href="#" id="hitokoto_text">:D 获取中...</a>
    <p id="provider">夜梦星尘API提供</p>
  </div>

  <script>
    var xhr = new XMLHttpRequest();
    xhr.open('get', 'https://api.yemengstar.com/?c=b');
    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4 && xhr.status === 200) {
        const data = JSON.parse(xhr.responseText);
        const hitokoto = document.querySelector('#hitokoto_text');
        hitokoto.href = `https://hitokoto.cn/?uuid=${data.uuid}`;
        hitokoto.innerText = data.hitokoto;
      }
    };
    xhr.send();
  </script>
</body>

</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-5-15 9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 准备
  • 3. 部署
  • 4. 反向代理
  • 5. 使用
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档