ghcr.io/linuxserver/bookstack:arm64v8-25.12.6
LinuxServer.io团队为您带来另一个容器版本,其特点包括:
- 定期且及时的应用更新
- 简单的用户映射(PGID、PUID)
- 带有s6 overlay的自定义基础镜像
- 每周基础操作系统更新,整个LinuxServer.io生态系统共享通用层,以最小化空间占用、停机时间和带宽
- 定期安全更新
在以下渠道找到我们:
- 博客 - 关于如何使用我们的容器的所有内容,包括操作指南、观点等更多信息!
- *** - 与社区和团队进行实时支持/聊天。
- Discourse - 在我们的社区论坛上发帖。
- https://github.com/linuxserver - 查看我们所有仓库的源代码。
- Open Collective - 欢迎通过***或为我们的预算做出贡献来支持我们
https://github.com/linuxserver/docker-bookstack
Bookstack 是一个免费开源的Wiki,旨在创建美观的文档。它配备了简单但功能强大的WYSIWYG编辑器,使团队能够轻松创建详细且有用的文档。
BookStack 基于SQL构建,并为偏好Markdown的用户提供了编辑器,旨在让文档编写从繁琐任务转变为愉快体验。
有关BookStack的更多信息,请访问其网站:[***]
支持的架构
我们利用docker manifest实现多平台支持。更多信息可查看docker文档https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list%E5%92%8C%E6%88%91%E4%BB%AC%E7%9A%84%E5%85%AC%E5%91%8A%E6%AD%A4%E5%A4%84%E3%80%82
只需拉取 lscr.io/linuxserver/bookstack:latest 即可获取适合您架构的正确镜像,您也可以通过标签拉取特定架构的镜像。
此镜像支持的架构如下:
| 架构 | 是否可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-\ |
| arm64 | ✅ | arm64v8-\ |
应用设置
默认用户名为 ***,密码为 password,通过 http:// :6875 访问容器。
此应用依赖于MariaDB数据库,可以是您已有的数据库或新数据库。如果您还没有,我们提供了镜像:https://github.com/linuxserver/docker-mariadb%E3%80%82
如果您打算在子文件夹反向代理(如我们的SWAG容器或Traefik)后使用此应用,您需要确保 APP_URL 环境变量设置为您的外部域名,否则应用将无法正常工作。
BookStack的文档可在 [***] 找到。
BookStack 文件和目录路径
此容器确保BookStack的某些应用文件和文件夹(如用户文件上传文件夹)保留在 /config 文件夹中,以便在 /config 容器路径作为卷挂载时保持持久化并可访问。在参考BookStack文档时,您可能需要了解这些文件和文件夹相对于非容器化BookStack安装的使用方式。
以下是容器 /config 路径与BookStack安装目录中相对路径的映射:
- 容器
/config路径 => BookStack 相对路径 /config/www/.env=>.env/config/log/bookstack/laravel.log=>storage/logs/laravel.log/config/backups/=>storage/backups//config/www/files/=>storage/uploads/files//config/www/images/=>storage/uploads/images//config/www/themes/=>themes//config/www/uploads/=>public/uploads/
修改 APP_URL
如果在初始安装后修改 APP_URL,您应从主机终端运行以下命令以更新数据库中的URL条目:
docker exec -it bookstack php /app/www/artisan bookstack:update-url ${OLD_URL} ${NEW_URL}
高级用户(完全控制 .env 文件)
如果您希望使用BookStack的额外功能(如电子邮件、LDAP等),您需要设置额外的环境变量,或根据BookStack文档的指导创建自己的 .env 文件。
容器会将示例 .env 文件复制到主机系统的 /config/www/.env 供您使用。
只读操作
此镜像可以在只读容器文件系统下运行。详情请阅读文档。
注意事项
/tmp必须挂载为tmpfs
| 参数 | 功能 |
|---|---|
-p 6875:80 | http/s Web界面。 |
-e PUID=1000 | 用户ID - 详见下文说明 |
-e PGID=1000 | 组ID - 详见下文说明 |
-e TZ=Etc/UTC | 指定要使用的时区,参见此列表。 |
-e APP_URL= | 应用程序的访问协议、IP/URL和端口(例如:http://192.168.1.1:6875 或 https://bookstack.mydomain.com) |
-e APP_KEY= | 会话加密密钥。您需要通过 docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey 生成。 |
-e DB_HOST= | 数据库实例主机名 |
-e DB_PORT=3306 | 数据库端口 |
-e DB_USERNAME= | 数据库用户 |
-e DB_PASSWORD= | 数据库密码(至少4个字符,非字母数字密码必须正确转义。) |
-e DB_DATABASE= | 数据库名称 |
-e QUEUE_CONNECTION= | 设置为 database 以启用异步操作(如发送电子邮件或触发Webhook)。参见文档。 |
-v /config | 持久化配置文件 |
--read-only=true | 以只读文件系统运行容器。请阅读文档。 |
从文件设置环境变量(Docker secrets)
您可以通过使用特殊前缀 FILE__ 从文件中设置任何环境变量。
例如:
-e FILE__MYVAR=/run/secrets/mysecretvariable
这将根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR。
运行应用程序的Umask
对于我们所有的镜像,您可以使用可选的 -e UMASK=022 设置来覆盖容器内启动的服务的默认umask设置。
请记住,umask不是chmod,它根据其值减去权限,而不是添加权限。在请求支持之前,请先阅读此处。
用户/组标识符
使用卷(-v 标志)时,主机操作系统和容器之间可能会出现权限问题,我们通过允许您指定用户 PUID 和组 PGID 来避免此问题。
确保主机上的所有卷目录都归您指定的同一用户所有,这样任何权限问题都会神奇地消失。
在此示例中 PUID=1000 和 PGID=1000,要查找您的ID,请使用 id your_user,如下所示:
id your_user
示例输出:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Docker Mods
我们发布了各种 https://github.com/linuxserver/docker-mods%EF%BC%8C%E4%BB%A5%E5%9C%A8%E5%AE%B9%E5%99%A8%E5%86%85%E5%90%AF%E7%94%A8%E9%A2%9D%E5%A4%96%E5%8A%9F%E8%83%BD%E3%80%82%E5%8F%AF%E7%94%A8%E4%BA%8E%E6%AD%A4%E9%95%9C%E5%83%8F%E7%9A%84Mods%E5%88%97%E8%A1%A8%EF%BC%88%E5%A6%82%E6%9C%89%EF%BC%89%E4%BB%A5%E5%8F%8A%E5%8F%AF%E5%BA%94%E7%94%A8%E4%BA%8E%E6%88%91%E4%BB%AC%E4%BB%BB%E4%BD%95%E9%95%9C%E5%83%8F%E7%9A%84%E9%80%9A%E7%94%A8Mods%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%B8%8A%E6%96%B9%E7%9A%84%E5%8A%A8%E6%80%81%E5%BE%BD%E7%AB%A0%E8%AE%BF%E9%97%AE%E3%80%82
支持信息
- 容器运行时的Shell访问:
docker exec -it bookstack /bin/bash
- 实时监控容器日志:
docker logs -f bookstack
- 容器版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack
- 镜像版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bookstack:latest
更新信息
我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器才能更新内部的应用程序。除某些例外情况(在相关readme.md中注明),我们不建议或支持在容器内更新应用程序。请参考上文的应用程序设置部分,了解是否推荐对此镜像进行更新。
以下是更新容器的说明:
通过Docker Compose
- 更新镜像:
- 所有镜像:
docker-compose pull
- 单个镜像:
docker-compose pull bookstack
- 更新容器:
- 所有容器:
docker-compose up -d
- 单个容器:
docker-compose up -d bookstack
- 您还可以删除旧的悬空镜像:
docker image prune
通过Docker Run
- 更新镜像:
docker pull lscr.io/linuxserver/bookstack:latest
- 停止运行中的容器:
docker stop bookstack
- 删除容器:
docker rm bookstack
- 使用上述相同的docker run参数重新创建新容器(如果正确映射到主机文件夹,您的
/config文件夹和设置将被保留) - 您还可以删除旧的悬空镜像:
docker image prune
镜像更新通知 - Diun(Docker镜像更新通知器)
[!TIP] 我们推荐使用 Diun 接收更新通知。不推荐或支持使用其他工具自动无人值守更新容器。
本地构建
如果您想对这些镜像进行本地修改以用于开发目的或自定义逻辑:
git clone https://github.com/linuxserver/docker-bookstack.git
cd docker-bookstack
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/bookstack:latest .
可以使用 lscr.io/linuxserver/qemu-static 在x86_64硬件上构建ARM变体,反之亦然:
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,您可以使用 -f Dockerfile.aarch64 指定要使用的Dockerfile。
- 29.04.26: - 切换为从 Codeberg 拉取发布版本。
- 28.12.25: - 基于 Alpine 3.23 重新构建。
- 05.07.25: - 基于 Alpine 3.22 重新构建。
- 04.01.25: - 添加 php-opcache。
- 17.12.24: - 基于 Alpine 3.21 重新构建。
- 11.10.24: - 默认使用环境配置而非 .env 文件配置。
- 06.09.24: - 添加 php-exif 以读取图片 EXIF 数据。
- 27.05.24: - 基于 Alpine 3.20 重新构建。现有用户应更新其 nginx 配置以避免 http2 弃用警告。
- 25.01.24: - 现有用户应更新:site-confs/default.conf - 清理默认站点配置。
- 23.12.23: - 基于 Alpine 3.19 和 php 8.3 重新构建。
- 31.10.23: - 进一步清理 sed 替换。
- 07.06.23: - 添加 mariadb-client 以支持 bookstack-system-cli。
- 25.05.23: - 基于 Alpine 3.18 重新构建,弃用 armhf。
- 13.04.23: - 将 ssl.conf 包含移至 default.conf。
- 01.03.23: - 添加 php iconv。
- 19.01.23: - 基于 alpine 3.17 和 php8.1 重新构建。
- 16.01.23: - 将
.env值用引号包裹。 - 05.01.23: - 修复数据库密码设置(sed 转义
&)。 - 21.12.22: - 当环境变量更新时,更新 .env 文件中的数据库信息。
- 10.10.22: - 移除导致部分用户出现问题的密码转义逻辑。
- 20.08.22: - 基于 alpine 3.15 和 php8 重新构建。重构 nginx 配置(参见变更公告)。
- 14.03.22: - 添加符号链接以支持主题。
- 11.07.21: - 基于 Alpine 3.14 重新构建。
- 12.01.21: - 从 0.31.0 版本开始,移除未使用的依赖项。
- 17.12.20: - 使 APP_URL 变量成为必填项(上游变更)。
- 17.09.20: - 基于 alpine 3.12 重新构建。修复 APP_URL 设置。默认将 php post 最大大小和上传最大文件大小提升至 100MB。
- 19.12.19: - 基于 alpine 3.11 重新构建。
- 26.07.19: - 在等待上游修复期间使用旧版本的 tidyhtml。
- 28.06.19: - 基于 alpine 3.10 重新构建。
- 14.06.19: - 添加 wkhtmltopdf 到镜像以支持 PDF 渲染。
- 20.04.19: - 基于 Alpine 3.9 重新构建,添加 MySQL 初始化逻辑。
- 22.03.19: - 切换到新的基础镜像,迁移至 arm32v7 标签。
- 20.01.19: - 添加 php7-curl
- 04.11.18: - 添加 php7-ldap
- 15.10.18: - 更改高级用户的功能
- 08.10.18: - 高级模式、符号链接更改、sed 修复、文档更新、添加部分 composer 文件
- 23.09.28: - 更新预发布版本
- 02.07.18: - 初始发布。
轩辕镜像配置手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
Docker 配置
登录仓库拉取
通过 Docker 登录认证访问私有仓库
专属域名拉取
无需登录使用专属域名
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
Dev Containers
VS Code Dev Containers 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
Harbor 镜像源配置
Harbor Proxy Repository 对接专属域名
Portainer 镜像源配置
Portainer Registries 加速拉取
Nexus 镜像源配置
Nexus3 Docker Proxy 内网缓存
系统配置
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
镜像拉取常见问题
使用与功能问题
配置了专属域名后,docker search 为什么会报错?
docker search 限制
Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?
站内搜不到镜像
机器不能直连外网时,怎么用 docker save / load 迁镜像?
离线 save/load
docker pull 拉插件报错(plugin v1+json)怎么办?
插件要用 plugin install
WSL 里 Docker 拉镜像特别慢,怎么排查和优化?
WSL 拉取慢
轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?
安全与 digest
第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?
新手拉取配置
轩辕镜像合规吗?轩辕镜像的合规是怎么做的?
镜像合规机制
轩辕镜像支持 docker push 上传本地镜像吗?
不支持 push
错误码与失败问题
docker pull 提示 manifest unknown 怎么办?
manifest unknown
docker pull 提示 no matching manifest 怎么办?
no matching manifest(架构)
镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?
invalid tar header(解压)
Docker pull 时 HTTPS / TLS 证书验证失败怎么办?
TLS 证书失败
Docker pull 时 DNS 解析超时或连不上仓库怎么办?
DNS 超时
docker 无法连接轩辕镜像域名怎么办?
域名连通性排查
Docker 拉取出现 410 Gone 怎么办?
410 Gone 排查
出现 402 或「流量用尽」提示怎么办?
402 与流量用尽
Docker 拉取提示 UNAUTHORIZED(401)怎么办?
401 认证失败
遇到 429 Too Many Requests(请求太频繁)怎么办?
429 限流
docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?
D-Bus 凭证提示
为什么会出现「单层超过 20GB」或 413,无法加速拉取?
413 与超大单层
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务