创建目录
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/mariadb 和 books 防止数据丢失。
专业提示
在生产环境中,请使用绝对路径来存储卷。相对路径可能会导致容器重启出现问题。
创建 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(数据库密码):
- 在
booklore 和 mariadb 两个服务中必须完全相同。
- 使用强密码,且该密码需唯一(不与其他服务复用)。
- 避免使用可能需要转义的特殊字符(如
$、& 等)。
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 的目录:
容器启动后,打开您的网页浏览器并导航到:
http://127.0.0.1:6060/setup