docker 上的 Bookstack 应用程序到 Windows 主机数据库问题

问题描述 投票:0回答:1

我在端口 3306 上安装了 Bookstack 的本地数据库,以便在 Windows 上重新启动 PC 后不会丢失数据。目标是从 docker 容器启动 Bookstack 实例,该实例将连接到 Windows 主机上的外部数据库。

设置了两个参数

  • APP_URL=http://172.25.16.1:6885 #6885 <- Step 1
  • DB_HOST=172.25.16.1 每次重新启动后获取新 IP:来自 ipconfig 172.25.16.1

docker-compose.yml

# Source: https://hub.docker.com/r/linuxserver/bookstack
version: "2"
services:
  bookstack_bsv2:
    image: lscr.io/linuxserver/bookstack
    container_name: bookstack_bsv2
    network_mode: "bridge"
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://172.25.16.1:6885 #6885 <- Step 1
      #- DB_PORT=3306 #3308 <- Step 1
      #- DB_HOST=bookstack_db_bsv1
      #- DB_USER=bookstack
      #- DB_PASS=yourdbpass
      #- DB_DATABASE=bookstackapp
      - DB_PORT=3306
      - DB_HOST=172.25.16.1
      - DB_USER=root
      - DB_PASS=
      - DB_DATABASE=bookstackapp
    volumes:
      - C:\BookStack\config:/config
    ports:
      - 6885:80
    restart: always
    #depends_on:
    #  - bookstack_db_bsv1
  #bookstack_db_bsv1:
  #  image: lscr.io/linuxserver/mariadb
  #  container_name: bookstack_db_bsv1
  #  environment:
  #    - PUID=1000
  #    - PGID=1000
  #    - MYSQL_ROOT_PASSWORD=yourdbrootpass
  #    - TZ=America/New_York
  #    - MYSQL_DATABASE=bookstackapp
  #    - MYSQL_USER=bookstack
  #    - MYSQL_PASSWORD=yourdbpass
  #  #volumes:
  #  #  - bookstack:/config
  #  ports:
  #    - 3308:3306
  #  restart: always

ipconfig 端口有效(但这不是通用的,比如 host.docker.internal) host.docker.internal 不起作用。 enter image description here

有没有办法让 Bookstack 以通用方式工作(不绑定到 IP 172.25.16.1)?或者我每次重启后都必须在环境变量中使用新IP重新创建一个容器?

enter image description here

docker-compose host bookstack
1个回答
0
投票

这个方法被跳过了。 enter image description here

我开始使用两个容器测试 Windows 方法:Bookstack 和 MariaDB。

SQLSTATE[HY000] [2002] 连接被拒绝(SQL:更改表页添加索引pages_template_index(template))强调文本

enter image description here

# Source: https://hub.docker.com/r/linuxserver/bookstack
version: "2"
services:
  bookstack_bsv1:
    image: lscr.io/linuxserver/bookstack #lscr.io/linuxserver/bookstack:23.02.2 # lscr.io/linuxserver/bookstack <- Step 5
    container_name: bookstack_bsv1
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://localhost:6885
      - DB_PORT=3306 #3308 <- Step 1
      - DB_HOST=bookstack_db_bsv1
      - DB_USER=bookstack
      - DB_PASS=yourdbpass
      - DB_DATABASE=bookstackapp
    #volumes:
    #  - C:\BookStack\config:/config
    ports:
      - 6885:80
    restart: always
    depends_on:
      - bookstack_db_bsv1
  bookstack_db_bsv1:
    image: lscr.io/linuxserver/mariadb
    #image: mysql:8.0.32 # <- Step 3 https://github.com/linuxserver/docker-bookstack/issues/125 error for Windows mount
    container_name: bookstack_db_bsv1
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=yourdbrootpass
      - TZ=America/New_York
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=yourdbpass
    volumes:
      - ./config:/config # <- Step 2
      - ./mysql-data:/var/lib/mysql # <- Step 4 for mysql db folder is different
    ports:
      - 3308:3306
    restart: always

但是这个 Windows 问题有一个解决方案:这里是 linuxserver/docker-bookstack#125 最后的帖子。

通过此组合,将创建文件卷并且文件可见。当容器被删除并重新创建时,docker compose 再次启动(文件夹保持原样)Boostack 登录开始,并使用 WIndows 上的图像恢复数据。

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:23.02.2
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://localhost:6875
      - APP_DEBUG=true
      - STORAGE_TYPE=local
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USER=bookstack
      - DB_PASSWORD=12345678
      - DB_DATABASE=bookstackapp
    volumes:
      - ./bookstackdata:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db

  bookstack_db:
    #image: mariadb:10.6.12
    image: mysql:8.0.32
    container_name: bookstack_db
    ports:
      - 3308:3306 # 3308 is a DB port visible on HOST
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=password
      - TZ=America/New_York
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=12345678
      - TERM=dumb
    volumes:
      - ./bookstackdbdata:/config
      - ./db-store:/var/lib/mysql
    restart: unless-stopped
© www.soinside.com 2019 - 2024. All rights reserved.