BookLore 使用教程

创建目录

1
2
3
4
5
# Create the main Booklore directory structure
mkdir -p ./booklore/config/mariadb
mkdir -p ./booklore/data
mkdir -p ./booklore/books
mkdir -p ./booklore/bookdrop
目录 目的 重要提示
config/mariadb 数据库配置和数据文件 切勿删除 - 包含所有元数据
data 应用程序数据、缓存、日志 存储设置和临时处理文件
books 主要图书馆存储空间 在此添加书籍或通过 Bookdrop 导
bookdrop 自动导入文件夹 将文件拖放至此处,即可进行免提导入

备份重要目录

经常备份 config/mariadbbooks 防止数据丢失。


专业提示

在生产环境中,请使用绝对路径来存储卷。相对路径可能会导致容器重启出现问题。

创建 docker-compose.yml

官方写法

导航到您的 Booklore 目录并创建配置文件:

1
2
cd ~/booklore
nano docker-compose.yml

添加以下配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
services:
  booklore:
    image: booklore/booklore-app:latest
    container_name: booklore
    environment:
      - PUID=501
      - PGID=20
      - TZ=Asia/Shanghai
      - DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
      - DATABASE_USERNAME=booklore
      - DATABASE_PASSWORD=your_secure_password
      - SWAGGER_ENABLED=false
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "6060:6060"
    volumes:
      - /your/local/path/to/booklore/data:/app/data
      - /your/local/path/to/booklore/books:/books
      - /your/local/path/to/booklore/bookdrop:/bookdrop
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.5
    container_name: mariadb
    environment:
      - PUID=501
      - PGID=20
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=super_secure_password
      - MYSQL_DATABASE=booklore
      - MYSQL_USER=booklore
      - MYSQL_PASSWORD=your_secure_password
    volumes:
      - /your/local/path/to/mariadb/config:/config
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 10

环境变量

PUID & PGID(用户 ID 与组 ID):

  • 需将其设置为与你的系统用户 ID 一致,以确保文件权限正常。
  • 可通过以下命令查看你的 ID:id -u(查看 PUID)和 id -g(查看 PGID)。

时区(TZ):

  • 设置为你的本地时区(例如:America/New_York 纽约、Europe/London 伦敦)。
  • 确保时间戳和定时任务的准确性。
  • 查看可用时区的命令:timedatectl list-timezones

DATABASE_PASSWORD(数据库密码):

  • bookloremariadb 两个服务中必须完全相同。
  • 使用强密码,且该密码需唯一(不与其他服务复用)。
  • 避免使用可能需要转义的特殊字符(如 $& 等)。

MYSQL_ROOT_PASSWORD(MySQL 根密码):

  • DATABASE_PASSWORD 需区分开(不可相同)。
  • 用于数据库管理操作(如创建用户、修改配置等)。
  • 务必将此密码设置得极其安全。

SWAGGER_ENABLED(Swagger 功能开关):

  • 生产环境中需设为 false,以保障安全性(避免 API 文档暴露)。
  • 开发阶段可设为 true,用于查看和测试 API 文档。

卷路径

重要提示:

请将 /your/local/path/to/… 替换为第一步中你实际的目录路径。


Linux/macOS 系统示例:

1
2
3
4
volumes:
  - /home/username/booklore/data:/app/data
  - /home/username/booklore/books:/books
  - /home/username/booklore/bookdrop:/bookdrop

Windows 系统(WSL2 环境)示例:

1
2
3
4
volumes:
  - /mnt/c/Users/YourName/booklore/data:/app/data
  - /mnt/c/Users/YourName/booklore/books:/books
  - /mnt/c/Users/YourName/booklore/bookdrop:/bookdrop

镜像版本

最新标签(默认值):

1
image: booklore/booklore-app:latest

特定版本(生产环境推荐):

1
image: booklore/booklore-app:v1.2.3

最佳实践

生产环境中应固定镜像的具体版本,以避免意外更新(如自动拉取的新版本包含未兼容变更)。

个人写法

brew 安装 mariadb

步骤 1:确保本地 MariaDB 已安装并运行

通过 brew 安装并启动 MariaDB(若已安装可跳过安装步骤):

1
2
3
4
5
# 安装 MariaDB
brew install mariadb

# 启动 MariaDB 服务
brew services start mariadb

初始化数据库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 执行 MariaDB 安全安装脚本
sudo mysql_secure_installation

# [步骤1] 提示输入当前 root 密码(新安装时直接回车)
Enter current password for root (enter for none): # 直接回车(新安装尚未设置密码)

# [步骤2] 是否切换到 Unix socket 认证?
# 选择 n 保留密码验证(允许远程连接和传统登录方式)
Switch to unix_socket authentication [Y/n] # 输入 n 并回车

# [步骤3] 是否更改 root 密码?(强烈建议设置强密码)
Change the root password? [Y/n] # 输入 y 并回车
# 需要重复输入确认新密码

# [步骤4] 是否移除匿名用户?(强烈建议移除以增强安全)
Remove anonymous users? [Y/n] # 输入 y 并回车
# 移除默认创建的匿名账户,防止无凭证访问

# [步骤5] 是否禁止 root 远程登录?(生产环境必选)
Disallow root login remotely? [Y/n] # 输入 y 并回车
# 仅允许 root 从本地登录,大幅降低被暴力破解风险

# [步骤6] 是否移除测试数据库?(建议移除)
Remove test database and access to it? [Y/n] # 输入 y 并回车
# 删除默认的 test 数据库,减少潜在攻击面

# [步骤7] 是否立即重载权限表?(必须选择)
Reload privilege tables now? [Y/n] # 输入 y 并回车
# 使所有安全设置立即生效(无需重启服务)
# 成功后会显示 "All done!" 提示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
services:
  booklore:
    image: booklore/booklore-app:latest
    container_name: booklore
    environment:
      - PUID=501
      - PGID=20
      - TZ=Asia/Shanghai
      # 使用 host.docker.internal 指向宿主机(macOS)
      - DATABASE_URL=jdbc:mariadb://host.docker.internal:3306/booklore
      # 使用您本地的账号
      - DATABASE_USERNAME=xxx
      - DATABASE_PASSWORD=xxx
      # Disable Swagger UI in production
      - SWAGGER_ENABLED=false
    ports:
      - "6060:6060"
    volumes:
      - /your/local/path/to/booklore/data:/app/data
      - /your/local/path/to/booklore/books:/books
      - /your/local/path/to/booklore/bookdrop:/bookdrop
    restart: unless-stopped

启动

从包含您的 docker-compose.yml 的目录:

1
docker compose up -d

容器启动后,打开您的网页浏览器并导航到:

http://127.0.0.1:6060/setup

0%