前阵子写了一个 Cloudflare Worker 版的同步书影音记录,个人觉得对于个人博客来说已经足够了,但可能一些同学介意 Cloudflare 的网络问题,于是我构建了一个 Docker 镜像,适合有国内服务器的同学使用。
首先需要安装 Docker 和 Docker compose,根据你的服务器自行寻找安装方法。
构建
创建一个docker-compose.yml文件,示例
version: '3'
services:
douban-docker:
image: fatesinger/douban:latest
container_name: douban-docker
volumes:
- assets:/app/static
environment:
MONGO_URI: mongodb://mongo:27017/fatesinger
DBID: 54529369
DOMAIN: https://node.wpista.com
depends_on:
- mongo
ports:
- 8000:3000
networks:
- shared-network
mongo:
image: mongo:4.4.29
container_name: mongo
restart: "always"
volumes:
# Persist mongodb data
- database:/data/db
ports:
- "27017:27017"
networks:
- shared-network
volumes:
assets:
driver: local
name: assets
database:
driver: local
name: mongodb_data
networks:
shared-network:
Nignx 配置
反向代理接口
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
}
运行
docker-compose up -d
不使用 docker 启动服务
根据.env.example创建.env文件
使用pm2
git clone git@github.com:bigfa/douban.git cd douban npm install npm run build npm install pm2 -g pm2 start dist/index.js --name douban --watch
自动同步
添加定时任务,每半小时同步一次。
*/30 * * * * curl -—silent "http://localhost:8000/sync" >/dev/null 2>&1
配置参数
MONGO_URI
DBID 你的豆瓣 ID
DOMAIN 绑定的域名
API_BASE 接口base url,建议单独绑定二级域名,如绑定二级目录静态文件需单独处理。
本地开发
根据.env.example创建.env文件
git clone git@github.com:bigfa/douban.git cd douban npm install npm run dev
需要本地有 mongodb 服务
接口
对外提供了 3 个接口,标记条目列表、单个条目信息、本地化条目封面。
- 条目列表
/list,支持两个参数 type 和 paged,type 为条目类型,status 为状态类型,paged 为页码,get 请求。 - 单个条目为
/:type/:id,type为类型,id为条目id。 - 本地化封面接口无序主动调用,在调用上面两个接口时会根据具体情况自动调用。
- 同步接口
/sync,初始化和定时任务使用。
前端展示
和以前一样,强烈建议使用本人全家桶,如果想自行调用则可以参考主题目录下 assets/ts/db.ts 和样式assets/scss/modules/_db.scss 的文件。或者直接用 worker 接口自行开发。
db.ts 已经被我封装成一个类,调用方法。
new Douban({
baseAPI: '', // api
container: ".db--container", // 容器名
});
现在html只需要如下结构
<div class="db--container"></div>
我自己测试了一阵子,使用上没啥大问题,比较稳定,偶尔有一直图片下载失败手动调用下接口重新下载即可。
你这输出的不是就是技术吗。
@1900 这是因为最近有学习需求
0% connecting to “https://download.docker.com/xxxx”
@不亦乐乎 docker hub已经被墙了
@不亦乐乎 换一下代理就行了
学习
@老孙 docker日志提示`sync 404`
@老孙 是不是你加base url了😂
不错的自动同步实例。
这个和之前的wp插件有什么区别吗?
@見面有花嗎 不明白无视就可以
@bigfa 搭建了一下,wp插件会抓取到的未知电视剧在douban-docker里直接就无了啊