目标
我们将通过 Docker 在 Windows 上快速部署 Calibre-Web,提供一个电子书管理和阅读服务。该服务支持直接在浏览器中管理和阅读书籍,并且支持备份功能。
前提条件
- Docker Desktop:确保已安装 Docker Desktop。如果没有安装,可以在 Docker 官网 下载并安装。
- Git Bash:用于运行 bash 脚本。可以从 Git 官网 下载并安装。
- 网络权限:确保 Docker 能够访问互联网来下载镜像。
步骤
1. 创建 Dockerfile 和启动脚本
在你的项目目录中创建以下文件:
Dockerfile
FROM linuxserver/calibre-web:latest
# 使用清华镜像源并安装 calibre,同时清理不必要的缓存和临时文件
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list \
&& apt update \
&& apt install -y calibre \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# 拷贝启动脚本
COPY start.sh /start.sh
RUN chmod +x /start.sh
# 容器启动时执行 start.sh
CMD ["/start.sh"]
start.sh
#!/bin/bash
# 条件创建 .calnotes 目录
[ ! -d /books/.calnotes ] && mkdir -p /books/.calnotes
# 如果 /books 目录中没有 metadata.db,可以恢复数据库
if [ ! -f /books/metadata.db ]; then
calibredb restore_database --really-do-it --with-library /books
fi
# 修改 metadata.db 文件的权限(只在必要时)
chmod a+w /books/metadata.db
# 启动 Calibre Web 服务作为容器主进程
cd /app/calibre-web
python3 cps.py
# 保持容器运行
tail -f /dev/null
2. 构建 Docker 镜像
打开 Git Bash 或者 Windows PowerShell,进入项目目录并执行以下命令:
docker build -t benson80/calibre-web .
此命令会根据 Dockerfile 构建镜像,并命名为 benson80/calibre-web。
3. 运行 Docker 容器
创建并运行 Docker 容器:
docker run -d --name=calibre-web -v D:/calibre-web/data:/config -v D:/calibre-web/library:/books -p 8083:8083 --restart unless-stopped -e TZ="Asia/Shanghai" benson80/calibre-web:latest
这里,D:/calibre-web/data 是你的 Calibre-Web 配置目录,D:/calibre-web/library 是你的电子书存放目录,端口 8083 用于访问服务。
4. 推送镜像到 Docker Hub(可选)
如果希望将自己的镜像上传到 Docker Hub,可以执行以下命令:
docker push benson80/calibre-web:latest
确保已登录 Docker Hub 账户。
5. 创建备份脚本
在你的 Windows 系统中创建备份脚本 backup_calibre.sh。该脚本会备份 Calibre-Web 配置和书籍数据。
backup_calibre.sh
#!/bin/bash
# 设置备份目录(Windows 主机上的备份路径)
BACKUP_DIR="/mnt/d/calibre-web/backup"
# Docker 容器挂载的目录(即主机上的路径)
CONFIG_DIR="/mnt/d/calibre-web/data"
BOOKS_DIR="/mnt/d/calibre-web/library"
# 创建备份文件夹(按日期命名)
DATE=$(date +%Y-%m-%d)
BACKUP_CONFIG_DIR="$BACKUP_DIR/config_$DATE"
BACKUP_BOOKS_DIR="$BACKUP_DIR/books_$DATE"
mkdir -p "$BACKUP_CONFIG_DIR"
mkdir -p "$BACKUP_BOOKS_DIR"
# 备份配置和书籍
cp -r "$CONFIG_DIR" "$BACKUP_CONFIG_DIR"
cp -r "$BOOKS_DIR" "$BACKUP_BOOKS_DIR"
echo "Backup completed successfully!"
确保该脚本与 Dockerfile 处于同一目录下。
6. 定时备份
使用 Windows 任务计划程序来设置每日自动备份。执行以下命令在 Windows 上设置每日任务:
schtasks /create /tn "CalibreWebBackup" /tr "\"C:\Program Files\Git\bin\bash.exe\" D:/backup_calibre.sh" /sc daily /st 08:30
这将创建一个任务,每天早上 8:30 执行备份。
7. 访问 Calibre-Web
一切就绪后,你可以通过浏览器访问 http://localhost:8083 来使用 Calibre-Web。你将能够管理和阅读你存放在 /books 目录下的电子书。
总结
通过以上步骤,你成功在 Windows 上使用 Docker 部署了 Calibre-Web,并配置了定时备份功能。此部署过程无需准备特定目录,适合大多数 Windows 环境,提供了一个简洁、稳定的电子书管理平台。