我在端口 3306 上安装了 Bookstack 的本地数据库,以便在 Windows 上重新启动 PC 后不会丢失数据。目标是从 docker 容器启动 Bookstack 实例,该实例将连接到 Windows 主机上的外部数据库。
设置了两个参数
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 不起作用。
有没有办法让 Bookstack 以通用方式工作(不绑定到 IP 172.25.16.1)?或者我每次重启后都必须在环境变量中使用新IP重新创建一个容器?
我开始使用两个容器测试 Windows 方法:Bookstack 和 MariaDB。
SQLSTATE[HY000] [2002] 连接被拒绝(SQL:更改表页添加索引pages_template_index(template))强调文本
# 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