BookStack开发环境Docker Compose配置详解
2025-07-05 08:29:57作者:霍妲思
概述
BookStack是一个开源的文档管理和知识库系统,使用PHP和MySQL构建。本文详细解析其开发环境下的Docker Compose配置文件,帮助开发者理解如何快速搭建BookStack的开发环境。
核心服务配置
1. MySQL数据库服务
配置中定义了一个MySQL 8.4数据库服务,专门用于BookStack开发环境:
db:
image: mysql:8.4
environment:
MYSQL_DATABASE: bookstack-dev
MYSQL_USER: bookstack-test
MYSQL_PASSWORD: bookstack-test
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
volumes:
- ./dev/docker/init.db:/docker-entrypoint-initdb.d
- db:/var/lib/mysql
关键点解析:
- 使用官方MySQL 8.4镜像
- 自动创建名为
bookstack-dev
的数据库 - 创建专用用户
bookstack-test
并设置密码 - 启用随机root密码增强安全性
- 挂载初始化脚本目录和持久化数据卷
2. BookStack应用服务
应用服务是BookStack的核心,配置如下:
app:
build:
context: .
dockerfile: ./dev/docker/Dockerfile
environment:
APP_URL: http://localhost:${DEV_PORT:-8080}
DB_CONNECTION: mysql
DB_HOST: db
DB_PORT: 3306
DB_DATABASE: bookstack-dev
DB_USERNAME: bookstack-test
DB_PASSWORD: bookstack-test
TEST_DATABASE_URL: mysql://bookstack-test:bookstack-test@db/bookstack-test
MAIL_DRIVER: smtp
MAIL_HOST: mailhog
MAIL_PORT: 1025
ports:
- ${DEV_PORT:-8080}:80
volumes:
- ./:/app
- ./dev/docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
entrypoint: /app/dev/docker/entrypoint.app.sh
extra_hosts:
- "host.docker.internal:host-gateway"
开发环境特色:
- 使用自定义Dockerfile构建
- 支持环境变量覆盖默认端口(8080)
- 挂载本地代码到容器实现热更新
- 配置Xdebug用于PHP调试
- 设置host.docker.internal方便容器访问宿主机服务
3. Node.js辅助服务
node:
image: node:22-alpine
working_dir: /app
user: node
volumes:
- ./:/app
entrypoint: /app/dev/docker/entrypoint.node.sh
用途说明:
- 使用Node.js 22 Alpine镜像
- 以非root用户(node)运行
- 挂载本地代码
- 用于前端资源编译和管理
4. MailHog邮件测试服务
mailhog:
image: mailhog/mailhog
ports:
- ${DEV_MAIL_PORT:-8025}:8025
功能特点:
- 提供本地SMTP服务器
- 捕获所有发送的邮件
- 通过Web界面(8025端口)查看邮件
- 支持环境变量自定义端口
开发环境特色功能
-
热重载开发:通过挂载本地代码目录(
./:/app
),开发者可以直接修改本地文件,容器内应用会立即响应变化。 -
调试支持:通过挂载Xdebug配置文件,为PHP开发者提供了完整的调试能力。
-
邮件测试:集成MailHog服务,可以捕获所有应用发送的邮件,方便测试注册、密码重置等功能。
-
前端开发:独立的Node服务容器,支持前端资源的实时编译和热更新。
-
数据库持久化:使用命名卷(
db:/var/lib/mysql
)确保数据库数据不会随容器销毁而丢失。
使用建议
-
启动开发环境前,建议先检查端口冲突,默认使用8080(应用)和8025(邮件)。
-
数据库初始化脚本应放在
./dev/docker/init.db
目录下,Docker会在首次启动时执行这些脚本。 -
对于前端开发,可以直接进入node容器执行npm/yarn命令。
-
修改PHP配置时,只需编辑本地的xdebug.ini文件,无需重建容器。
-
邮件服务可通过访问
http://localhost:8025
查看捕获的邮件。
总结
这份Docker Compose配置为BookStack开发者提供了完整的开发环境解决方案,包含了应用运行所需的所有服务(数据库、应用服务器、前端构建工具和邮件测试服务)。通过合理的容器编排和卷挂载,实现了开发效率的最大化,是BookStack项目开发的重要基础设施。