• 【BookStack】搭建 BookStack(docker)的记录


    搭建 BookStack(docker)的记录

    本文将详细介绍如何在本地环境中使用 Docker 搭建 BookStack,并且解决其默认版本不支持中文 PDF 导出的问题。

    1. 安装 MySQL 8.0

    首先,使用 Docker 拉取 MySQL 8.0 镜像并运行 MySQL 容器:

    docker pull mysql:8.0
    docker run --name mysql8 -v /root/docker_root/bookstack/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpassword -d mysql:8.0
    

    2. 构建自定义的 BookStack Docker 镜像

    由于官方的 linuxserver/bookstack 镜像不支持导出中文 PDF,我们需要自己构建一个包含中文字体支持的镜像。以下是 Dockerfile 的内容:

    # 使用包含 wkhtmltopdf 的基础镜像
    FROM surnet/alpine-wkhtmltopdf:3.19.0-0.12.6-full as wkhtmltopdf
    FROM linuxserver/bookstack
    
    # 将 wkhtmltopdf 相关文件复制到目标镜像中
    COPY --from=wkhtmltopdf /bin/wkhtmltopdf /usr/bin/wkhtmltopdf
    COPY --from=wkhtmltopdf /bin/wkhtmltoimage /usr/bin/wkhtmltoimage
    COPY --from=wkhtmltopdf /bin/libwkhtmltox* /usr/bin/
    
    # 下载并添加中文字体
    ADD https://registry.freedom-yun.com/repository/public-archives/com/microsoft/fonts/chinese-fonts/10.0.0/chinese-fonts-10.0.0.tar.gz /usr/share/fonts/
    
    # 更新 apk 源并安装必要的库,解压字体包
    RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && \
        apk add --no-cache \
        libstdc++ \
        libx11 \
        libxrender \
        libxext \
        libssl3 && \
        tar -zxvf /usr/share/fonts/chinese-fonts-10.0.0.tar.gz -C /usr/share/fonts/ && \
        rm -f /usr/share/fonts/chinese-fonts-10.0.0.tar.gz
    

    然后,在包含上述 Dockerfile 的目录下运行以下命令构建镜像:

    docker build -t bookstack-with-wkhtmltopdf .
    

    3. 构建 docker-compose.yml

    创建一个 docker-compose.yml 文件,内容如下:

    version: "3.3"
    services:
      bookstack:
        image: bookstack-with-wkhtmltopdf
        container_name: bookstack
        restart: always
        environment:
          - PUID=1000
          - PGID=1000
          - APP_URL=http://ip:8080
          - DB_HOST=mysql8
          - DB_USER=db_user
          - DB_PASS=dbpassword
          - DB_DATABASE=bookstack
        ports:
          - 8080:80
        volumes:
          - ./bookstack_data:/config
    

    在包含上述 docker-compose.yml 文件的目录下运行以下命令启动容器:

    docker-compose up -d
    

    4. 配置国内环境

    4.1 配置 Docker 镜像加速和 DNS

    编辑 /etc/docker/daemon.json 文件,添加以下内容:

    {
      "registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"],
      "dns": ["223.5.5.5","223.6.6.6"]
    }
    

    4.2 通过代理构建镜像

    如果下载 surnet/alpine-wkhtmltopdf 镜像速度较慢,可以使用代理:

    docker build -t bookstack-with-wkhtmltopdf --build-arg HTTP_PROXY=http://proxy_ip:proxy_port --build-arg HTTPS_PROXY=http://proxy_ip:proxy_port .
    

    缓存下载完 surnet/alpine-wkhtmltopdf 后,在 RUN APK ADD 阶段可能会出现超时的错误。因为有缓存了,所以进行不使用代理来构建镜像:

    docker build -t bookstack-with-wkhtmltopdf .
    

    至此,BookStack 搭建完成,可以通过浏览器访问 http://ip:8080 进行使用。

  • 相关阅读:
    【一周安全资讯1118】北京高院发布《侵犯公民个人信息犯罪审判白皮书》;工银金融勒索案的事件响应服务商MoxFive是谁?
    PC博物馆(番外01)-城会玩,初中生开发实体尺规大航海游戏
    GB/T 23996-2009 室内装修用溶剂型金属板涂料检测
    vue3 和 vue2 区别,面试简答
    windows 2012 server 禁止某个IP不可以访问指定端口
    实时人脸检测:基于卷积神经网络CNN和OpenCV的摄像头应用
    图像分割算法
    七夕了,谁说我们程序员不懂浪漫!!!
    微服务绕不过的坎-服务雪崩
    朴素贝叶斯法
  • 原文地址:https://blog.csdn.net/linjiuxiansheng/article/details/139844789