近日想在qnap中使用docker部署Bookstack。首先尝试使用自带的SQL服务器作为数据库。但经过多次测试后发现自带的数据库版本太低(Mairadb5.5.57)导致数据库导入异常,无法登陆bookstack。 最后通过docker部署一台mairadb服务器作为数据库可以解决,具体步骤如下:
创建mairadb容器
docker run -d \
--name=mariadb \
-e MYSQL_ROOT_PASSWORD=<rootpassword>; \
-e TZ=Asia/Shanghai \
-e MYSQL_DATABASE=bookstack \
-e MYSQL_USER=bookstack \
-e MYSQL_PASSWORD=<password>; \
-v /path/mariadb:/config \
linuxserver/mariadb
- MYSQL_ROOT_PASSWORD:数据库root密码;
- MYSQL_DATABASE/MYSQL_USER/MYSQL_PASSWORD:为bookstack创建一个数据库,并为此创建一个数据库用户和数据库密码;
- /path/mariadb:在你的qnap中创建一个用于挂载的文件夹,我一般创建在
/share/Container
下,如:/share/Container/mariadb
;
创建Bookstack
docker run -d \
--name=bookstack \
--link=mariadb:db \
-e APP_URL= \
-e DB_HOST=mariadb \
-e DB_USER=bookstack \
-e DB_PASS=<password> \
-e DB_DATABASE=bookstack \
-p 6875:80 \
-v /path/bookstack:/config \
linuxserver/bookstack
- --link:链接其他容器。
mariadb
是你上面数据库容器的name,“:
”后是源容器在当前容器中的别名,可以随意设置; - APP_URL:应用的完整URL,包括
http(s)://IP(域名):6875
,6875
为下方映射的主机端口,如果映射的是80或443则可以不写; - DB_HOST:上面创建的数据库容器的name;
- DB_USER/DB_PASS/DB_DATABASE:上面创建的数据库用户、密码和数据库名;
- 6875是映射到的主机端口,可以自行修改,如果站点使用ssl,则可以修改成
-p 6875:443
; - /path/bookstack:同上;
如此,等几分钟后显示
[services.d] done.
说明应用创建成功,现在可以使用你设置的APP\_URL访问BookStack了!
HTTPS访问
前提是你映射了容器的443端口。 访问你挂载的文件夹下的/www/keys/
,将你的证书文件替换原有文件后重启容器即可。
提醒
如果创建失败需要重来,请先删除挂载目录下的文件。
QTS5.0RC版已经去掉了自带的SQL服务器,取而代之的是需要手动从AppCenter安装MairaDB 5或 MairaDB 10 。