You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Bookstack连接Windows本地数据库的通用配置求助

解决Docker Bookstack连接Windows本地动态IP数据库的通用方案

问题背景

在Windows环境下,Docker容器中的Bookstack通过动态IP连接本地3306端口的数据库,但每次重启电脑后IP会变化,需手动修改docker-compose.yml重建容器,且host.docker.internal标识无法生效,需要无需绑定固定IP的通用配置方式。


方案1:修复host.docker.internal解析问题(推荐)

host.docker.internal是Docker官方提供的指向主机的通用标识,失效通常是数据库配置或Docker网络设置问题,按以下步骤修复:

  1. 修改数据库监听配置
    • 找到本地MySQL/MariaDB的my.ini配置文件(通常在C:\ProgramData\MySQL\MySQL Server X.X或安装目录)
    • 将bind-address的值改为0.0.0.0(允许所有IP访问数据库),保存后重启数据库服务
  2. 授权数据库用户远程访问
    • 登录本地数据库,执行以下SQL(适配你的root用户空密码情况):
      GRANT ALL PRIVILEGES ON bookstackapp.* TO 'root'@'%' IDENTIFIED BY '';
      FLUSH PRIVILEGES;
      
  3. 更新docker-compose.yml
    • 将APP_URL和DB_HOST替换为host.docker.internal,移除可能影响的network_mode: "bridge"(默认bridge网络已支持该标识):
      version: "2"
      services:
        bookstack_bsv2:
          image: lscr.io/linuxserver/bookstack
          container_name: bookstack_bsv2
          environment:
            - PUID=1000
            - PGID=1000
            - APP_URL=http://host.docker.internal:6885
            - DB_PORT=3306
            - DB_HOST=host.docker.internal
            - DB_USER=root
            - DB_PASS=
            - DB_DATABASE=bookstackapp
          volumes:
            - C:\BookStack\config:/config
          ports:
            - 6885:80
          restart: always
      
  4. 重新启动容器:docker-compose up -d

方案2:给Windows网卡设置固定IP

如果不想依赖Docker的标识,可直接给主机网卡分配固定IP:

  • 打开「控制面板 → 网络和共享中心 → 更改适配器设置」,右键目标网卡(WLAN/以太网)选择「属性」
  • 找到「Internet协议版本4(TCP/IPv4)」,双击后选择「使用下面的IP地址」,设置同网段固定IP(例如192.168.1.100,子网掩码255.255.255.0,网关填路由器IP)
  • 更新docker-compose.yml中的APP_URL和DB_HOST为该固定IP,后续无需再修改

方案3:自动脚本更新IP(无需重建容器)

写一个批处理脚本自动获取当前IP并更新容器环境变量,设置开机自启动:

  1. 创建update_bookstack_ip.bat文件,内容如下:
    @echo off
    :: 获取非回环的IPv4地址
    for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i "IPv4 Address" ^| findstr /v "127.0.0.1"') do (
        set LOCAL_IP=%%a
        goto :found
    )
    :found
    set LOCAL_IP=%LOCAL_IP: =%
    :: 更新容器环境变量并重启
    docker container update --env APP_URL=http://%LOCAL_IP%:6885 --env DB_HOST=%LOCAL_IP% bookstack_bsv2
    docker restart bookstack_bsv2
    
  2. 将脚本放到Windows启动文件夹(按Win+R输入shell:startup打开),实现开机自动执行

内容的提问来源于stack exchange,提问作者user1572418

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:34:55