能聚合各站热点的DailyHot

news2024/12/24 3:28:38

在这里插入图片描述

什么是 DailyHot ?

今日热榜(DailyHot)是一个获取各大热门网站热门头条的聚合网站,能追踪全网热点、实现简单高效阅读。项目分为前、后端,其中后端提供了一个聚合热门数据的 API 接口。

🚩 后端 API 特性

  • 极快响应,便于开发
  • 支持 RSS 模式和 JSON 模式
  • 支持多种部署方式
  • 简明的路由目录,便于新增

官方提供了示例网站:https://hot.imsyy.top

构建镜像

官方只提供了后端 API 镜像,但没有前端的,可以通过 vercel 实现无服务器部署。老苏想通过 Docker 部署在群晖上,只能自己动手了

如果你不想自己构建,可以跳过,直接阅读下一章节

这是一个标准的前端项目,对老苏来说,难点在于后端的地址是不确定的,所以还是采用了惯用的占位符的方式,这种方式的缺点是,只有在创建容器的时候,环境变量才起作用,中途修改是不生效的。

首先要准备一个 Dockerfile 文件,采用了分层构建,这样镜像会比较小一点

FROM node:18-alpine as build-deps

WORKDIR /app
COPY . ./
RUN npm i -g pnpm
RUN pnpm install
RUN pnpm build

FROM nginx:1.12-alpine    
MAINTAINER laosu<wbsu2003@gmail.com>    

# 环境变量    
ENV VITE_GLOBAL_API "https://api-hot.efefee.cn"  
ENV VITE_ICP "豫ICP备2022018134号-1" 

# 拷贝静态文件    
COPY --from=build-deps /app/dist /usr/share/nginx/html

COPY replace_apiurl.sh ./replace_apiurl.sh
RUN chmod +x replace_apiurl.sh 

EXPOSE 80    
CMD ["sh", "replace_apiurl.sh"]

还需要一个 replace_apiurl.sh 文件,用于👇

  • 将打包时的占位符,替换为环境变量的值
  • 启动 nginx
#!/bin/bash  
  
find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,vitegloalapi,'"$VITE_GLOBAL_API"',g' {} \;  
  
find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,viteicp,'"$VITE_ICP"',g' {} \;  
  
nginx -g "daemon off;"

在构建之前,还要修改项目中的 .env 文件,修改前是下面这样的,老苏把原来的默认值放入了 Dockerfile 中,这样当你不设置环境变量时,也能连接官网使用

修改后

构建镜像和容器运行的基本命令如下👇

# 拉取源代码
git clone https://github.com/imsyy/DailyHot.git

# 如果 github 慢或者访问不了
git clone https://mirror.ghproxy.com/https://github.com/imsyy/DailyHot.git

# 进入代码目录
cd DailyHot

# 将 Dockerfile、 replace_apiurl 文件放进当前目录中

# 修改 .env  文件,切记!切记!切记!否则永远连的都是官方 api 地址

# 构建镜像
docker build -t wbsu2003/dailyhot:v1 .

# 生成容器
docker run -d \
--name=dailyhot \
-p 6689:80 \
-e VITE_GLOBAL_API="http://192.168.0.197:6688" \
-e VITE_ICP="" \
wbsu2003/dailyhot:v1

安装

在群晖上以 Docker 方式安装。

后端 API

在注册表中搜索 dailyhot-api ,选择第一个 imsyy/dailyhot-api,版本选择 latest

本文写作时, latest 版本对应为 v2.0.0-rc.2

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
66886688

前端

在注册表中搜索 wbsu2003/dailyhot,版本选择 latest

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
668980

环境

可变
VITE_GLOBAL_API后端 API 地址
VITE_ICPICP 信息

因为 Dockerfile 设置了,所以有默认值

后端 API 地址设为 http://群晖IP:6688VITE_ICP 没有的话可以设为空

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行后端容器
docker run -d \
   --restart unless-stopped \
   --name dailyhot-api \
   -p 6688:6688 \
   imsyy/dailyhot-api

# 运行前端容器
docker run -d \
--name=dailyhot-web \
-p 6689:80 \
-e VITE_GLOBAL_API="http://192.168.0.197:6688" \
-e VITE_ICP="" \
wbsu2003/dailyhot

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  dailyhot-api:
    image: imsyy/dailyhot-api
    container_name: dailyhot-api
    restart: unless-stopped
    ports:
      - 6688:6688
    
  dailyhot-web:
    image: wbsu2003/dailyhot
    container_name: dailyhot-web
    restart: unless-stopped
    ports:
      - 6689:80
    environment:
      - VITE_GLOBAL_API=http://192.168.0.197:6688
      - VITE_ICP=

然后执行下面的命令

# 新建文件夹 dailyhot
mkdir -p /volume1/docker/dailyhot

# 进入 dailyhot 目录
cd /volume1/docker/dailyhot

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

前端

在浏览器中输入 http://群晖IP:6689 就能看到主界面

手机上的效果

后端

在浏览器中输入 http://群晖IP:6688 就能看到后端界面

测试接口,在浏览器中输入 http://群晖IP:6688/all

获取榜单数据,例如:51cto,可以在浏览器中输入 http://群晖IP:6688/51cto

获取 RSS,可以在浏览器中输入 http://群晖IP:6688/51cto?rss=true

可以用于 RSS 阅读器中订阅

参考文档

imsyy/DailyHotApi: 🔥 今日热榜 API,一个聚合热门数据的 API 接口,支持 Vercel 部署 | 前端页面:https://github.com/imsyy/DailyHot
地址:https://github.com/imsyy/DailyHotApi

imsyy/DailyHot: DailyHot 今日热榜前端页面 | API:https://github.com/imsyy/DailyHotApi
地址:https://github.com/imsyy/DailyHot

今日热榜 - 汇聚全网热点,热门尽览无余
地址:https://hot.imsyy.top/#/

关于 DailyHotApi 的重构 | 無名小栈
地址:https://blog.imsyy.top/posts/2024/0408

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

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

相关文章

Gradient发布支持100万token的Lllama3,上下文长度从8K扩展到1048K

前言 近日Gradient公司在Crusoe Energy公司的算力支持下&#xff0c;开发了一款基于Llama-3的大型语言模型。这款新模型在原Llama-3 8B的基础上&#xff0c;将上下文长度从8000 token大幅扩展到超过104万token。 这一创新性突破&#xff0c;展现了当前SOTA大语言模型在长上下…

kali安装及替换源

一、安装及简单配置 1.安装&#xff1a;地址就不贴了&#xff0c;自己打一下就好 2.虚拟机中打开kali 3.替换包源 (1)使用指令打开/etc/apt/sources.list mousepad /etc/apt/sources.list (2)将内容替换成阿里云源 deb http://mirrors.aliyun.com/kali kali-rolling main n…

DeepMind的首席执行官Demis Hassabis表示,未来一到两年内,能够独立完成复杂任务的AI代理将成为现实

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

JDK1.8的安装及环境变量的配置(超详细图文)

0.JDK 简介 JDK&#xff0c;全称Java Development Kit&#xff0c;是Java语言的软件开发工具包&#xff0c;主要用于Java程序的开发。 1.首先下载JDK安装包 下载安装jdk1.8或jdk17(可以去官方下载) 这里提供一份网盘下载地址&#xff0c;大家按需自取&#xff1a;点击这里下…

【JavaScript】内置对象 - 数组对象 ③ ( 数组反转 - reverse 方法 | 数组排序 - sort 方法 | 自定义数组排序规则 )

文章目录 一、数组排序1、翻转数组元素 - reverse()2、数组元素排序 - sort() 默认从小到大排序3、数组元素排序 - sort() 自定义排序规则4、数组元素排序 - sort() 自定义降序排序简化写法 Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript…

Vue2 组件通信方式

props/emit props 作用&#xff1a;父组件通过 props 向子组件传递数据parent.vue <template><div><Son :msg"msg" :pfn"pFn"></Son></div> </template><script> import Son from ./son export default {name: …

Web前端开发 小实训(三) 商品秒杀小练习

学生能够在本次实训中完成商品秒杀页面的基本逻辑 任务要求 能够实现某一个商品的秒杀&#xff0c;在倒计时结束后不再进行秒杀。 操作步骤 1、打开预设好的页面 <html><head><meta charset"utf-8"><title>秒杀</title><link …

DataLab-数据分析的Ai辅助工具

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09;DataLab是一个由DataCamp提供的强大在线数据分析平台&#xff0c;它通过AI技术简化了数据处理流程&#xff0c;使得用户无需编程或数据分析的高级技能即可快速获取数据洞察。它支持多种数据源&#xff0c;包…

AJAX概述和基本使用

01 【AJAX概述和基本使用】 1.AJAX简介 AJAX 全称为Asynchronous JavaScript And XML&#xff0c;就是异步的JS 和XML 通过AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据 AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准…

RF Plasma gernerator-系列(RF-5KW Adtec)说明书TX06-9001-00

RF Plasma gernerator-系列(RF-5KW Adtec)说明书TX06-9001-00

C语言 [力扣]详解环形链表和环形链表II

各位友友们&#xff0c;好久不见呀&#xff01;又到了我们相遇的时候&#xff0c;每次相遇都是一种缘分。但我更加希望我的文章可以帮助到大家。下面就来具体看看今天所要讲的题目。 文章目录 1.环形链表2.环形链表II 1.环形链表 题目描述:https://leetcode.cn/problems/link…

亲测有效!关键点检测——COCO格式转YOLO格式代码!!!

话不多收&#xff0c;直接上代码&#xff0c;这个我也是找了好久的&#xff0c;分享不易&#xff0c;给个鼓励&#xff01;&#xff08;记得点赞收藏&#xff09; 大家可以直接使用此代码转换你自己的数据集&#xff0c;路径换成你自己的就行了&#xff0c;注意路径格式&#x…

【经验总结】超参数对模型训练的影响

1. 学习率对模型训练的影响 python 代码&#xff1a; import numpy as np from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam import matplotlib.pyplot as plt# 生成随机数据集 np.random.seed(0) X_train np.random…

2024年最新趋势跨境电商平台开发需了解的新技术

随着数字化技术的不断演进和全球市场的日益融合&#xff0c;跨境电商平台开发将面临前所未有的挑战和机遇。为了更好地适应并引领这一发展&#xff0c;开发者需要密切关注2024年最新的技术趋势&#xff0c;以确保他们的平台能够在竞争激烈的市场中脱颖而出。本文将对跨境电商平…

TCP UDP

传输层 端口号 tcp udp 网络层 IP地址 IP TCP&#xff0c;UDP 1&#xff0c;TCP是面向链接的协议&#xff0c;而UDP是无连接的协议; 2&#xff0c;TCP协议的传输是可靠的&#xff0c;而UDP协议的传输“尽力而为” 3&#xff0c;TCP可以实现流控&#xff0c;但UDP不行;…

通用型产品发布解决方案(后端环境搭建)

文章目录 后端renren脚手架配置1.解压后放到项目目录下2.新建商品模块1.创建一个新模块 sunliving-commodity2.删除两个不必要的文件3.pom.xml 引入依赖 3.maven进行聚合管理1.将刚才配置的pom.xml文件复制到父项目下并进行修改2.手动将这个pom.xml加入项目&#xff08;如果右下…

14 华三 Telent

AI 解读 09 华三 SSH-CSDN博客 华三 Telent是华为三号电信工程有限公司的简称&#xff0c;是一家专门从事电信网络工程建设的公司。该公司提供电信网络规划、设计、建设、维护等一系列服务&#xff0c;包括有线和无线网络设备的安装和调试、网络性能优化等。华三 Telent致力于…

linux fdisk 银河麒麟操作系统 v10 磁盘分区和挂载 详细教程

1查看 未加载的磁盘 fdisk -l 2 开始分区 fdisk /dev/vdb #查看分区 #新建分区和保存 3 格式化和挂载 fdisk -l mkfs.xfs /dev/vdb1 #查看uuid blkid /dev/vdb1 mkdir /data vi /etc/fstab UUID209daa-fb1c-48f2-bf5e-e63f38cb8a /data xfs defaults 0 0 #加载下 mo…

指针(脑图梳理)

今天让我们来梳理一下指针都有哪些概念吧 这个脑图是整理的一些指针相关知识的概念&#xff0c;希望对大家有帮助

如何远程控制另一部手机:远程控制使用方法

在现今高科技的社会中&#xff0c;远程控制手机的需求在某些情境下变得越来越重要。不论是为了协助远在他乡的家人解决问题&#xff0c;还是为了确保孩子的在线安全&#xff0c;了解如何实现这一功能都是有益的。本文将为您简要介绍几种远程控制手机的方法及其使用要点。 KKVi…