Skip to content

宝塔面板Docker部署(旧版本)

提示

此文档只适合v3.3.0之前版本部署。
知识库系统涉及的运行环境比较复杂,建议使用Docker部署,Docker的使用在宝塔面板上操作非常简便。

运行环境

注意

如果找不到Docker菜单,可能是由于宝塔面板版本太低,请及时升级。

  • 步骤1:
    登录宝塔面板后,单击左侧菜单最底部的【自定义菜单】,开启【Docker】菜单。单击左侧菜单【Docker】,出现提示安装Docker,单击【安装】。

  • 步骤2:
    单击【软件商店】,安装好【Nginx】和【进程守护管理器】。

添加站点

⚠️ 警告

PHP版本一定要设置为纯静态,否则后续步骤会出现问题。

  • 步骤1:
    单击【网站】->【PHP项目】->【添加站点】,填写好【域名】,【根目录】保持默认值即可,无需要创建数据库,PHP版设置为【纯静态】,单击【提交】。
  • 步骤2:
    单击网站列表该站点的【设置】,单击【SSL】->【Let's Encrypt】,选择【文件验证】,勾选上域名,单击【申请】,等待完成SSL证书申请。
  • 步骤3:
    单击网站列表该站点【根目录】进入文件夹,单击【上传】->【上传文件】,选择官网下载的源码包,单击【开始上传】。
  • 步骤4:
    上传完毕以后,右键单击源码包,单击【解压】。

Docker部署

  • 步骤1:
    打开站点目录下的【docker】目录,右键单击【docker-compose.example.yml】文件,单击【复制】,在空白处单击右键,单击【粘贴】,将新文件命名为【docker-compose.yml】。
  • 步骤2:

Docker知识科普

一般情况下,docker端口挂载的格式都是"端口1:端口2","端口1"为挂载主机端口,"端口2"为容器内部端口。所以我们在主机访问端口时,要访问"127.0.0.1:端口1"。 如果进入本容器内部或者容器之间的通讯,访问的"端口2"。容器之间的访问,使用“容器名:端口"。本项目除了使用主机 Nginx代理nginx容器,其他都是nginx容器与其他容器他们之间通讯。

打开【docker-compose.yml】文件,按文件注释的内容③和⑦自定义修改相关容器密码,并在本地电脑记录要求记录的信息,操作完保存文件。一般情况下,默认的容器名和挂载端口不会有冲突,如果熟悉docker并发现容器名或挂载端口有冲突,可以修改①~⑨的其它选项。

  • 步骤3:

注意

id为纯数字,请勿按图片的id填写,按自己实际情况填写。

浏览器打开新的窗口访问宝塔面板,单击【菜单】->【终端】,登录系统管理员账号,在终端输入id www并按回车键,可以看到终端返回的信息,信息为 www用户的用户id和用户组id,分别将uid的id和gid的id复制到【docker-compose.yml】文件中"user:"后面,格式如"uid的id:gid的id",修改后【保存】文件,这样PHP容器就可以以www的权限进行运行。

shell
id www
# uid=1001(www) gid=1002(www) groups=1002(www)

  • 步骤4:

⚠️ 警告

如果添加失败,很可能是步骤2没操作正确,请从步骤1重新操作。yml文件用缩进来表示层次结构,每一行需要有规则的对齐。

单击【Docker】->【项目模块】->【搜索本地模块】->【📂(文件夹小图标)】,选择站点目录下的/docker目录,单击【搜索】,模板名选择【docker】,单击【添加】。

  • 步骤5:

⚠️ 警告

如果添加失败,很可能是步骤2没操作正确,请从步骤1重新操作。注意挂载主机的端口号,不要与主机已有的其他软件冲突。

单击【Docker】->【项目】->【添加Composer项目】,在【Composer模块】选择【docker】,填写名称,单击【添加】。添加成功以后,如图所示。

  • 步骤6:

提示

该反向代理为主机Nginx代理到Ngxin容器,代理的端口为Nginx容器挂载主机的端口。

单击【网站】,找到前面步骤添加的站点,点击【设置】->【反向代理】->【添加反向代理】,填写127.0.0.1:180,其中180为Docker的Nginx容器挂载主机的端口,按实际挂载的端口填写。

  • 步骤7: 单击【反向代理】->【配置文件】,在 Nginx 配置上添加一行配置。
nginx
proxy_set_header X-Forwarded-Proto $scheme;

程序安装

注意

如果访问页面出现"No input file specified",是因为站点目录设置为server/pulibc,宝塔面板生成.user.ini文件影响到容器运行。请将目录设置为项目根目录,并删除掉server/public/.user.ini文件,单击【Docker】->【容器】,选择所有容器,单击【批量操作】->【重启容器】。重新访问即可。

  • 步骤1:
    在浏览器访问站点,进入程序安装界面,单击【我已阅读并同意】->【继续】。

  • 步骤2:
    进入安装信息填写页面,以下信息非常重要,填写错误无法通过安装,填写信息大部分都站点目录的docker/docker-compose.yml文件中。
    【Mysql配置项】的【数据库主机】填写 Mysql容器名称,【端口号】填写Mysql容器内部端口号,【数据库用户】填写root,【密码】和【数据库名称】填写与docker-compose.yml设置一样。
    【Redis配置项】的【数据库主机】填写Redis容器名称,【端口号】填写Redis容器内部端口号。
    【PostgreSQL配置项】数据主机填写PostgreSQL容器名称,【端口号】填写PostgreSQL容器内部端口号,【数据库用户】和【数据密码】和【数据库名称】都填写与docker-compose.yml设置一样。
    然后填写后台超级管理员账号和名称即可,单击【继续】进行安装。

访问地址

安装成功好,打开一下链接可以访问相应页面。 管理后台地址:http://域名/admin 用户前台地址:http://域名/pc

定时任务

⚠️ 警告

定时任务不设置,会导致一些业务无法正常使用。

点击【计划任务】,设置任务类型为 【Shell脚本】、填写任务名称、执行周期设置为【N分钟】【1分钟】,URL地址为docker exec mddai-php-8.0 php think crontab,“mddai-php-8.0”为PHP的容器名,请以项目实际容器名为准,然后【添加任务】。

守护进程设置

注意

按文档添加多个守护进程。

QA拆分守护进程

添加第一个守护进程。 单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写

shell
docker exec mddai-php-8.0 php think queue:listen --timeout 300  --queue qaJob

其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。

向量化守护进程

单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写

shell
docker exec mddai-php-8.0 php think queue:listen --timeout 120 --queue emJob

其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。

SD守护进程

单击【软件商店】,找到软件【进程守护管理器】,单击【设置】->【守护进程管理】->【添加守护进程】。
【名称】自定义填写,【启动用户】设置为 root,运行目录选择站点目录。启动命令填写

shell
docker exec mddai-php-8.0 php think queue:listen --timeout 3000 --queue ChatMoneySdJob

其中的"mddai-php-8.0"为PHP容器名称,根据实际修改。单击【确定】即可填写完成。

授权

注意

1.授权文件与产品一一对应,如果不是同一产品,将无法使用。
2.授权文件与项目域名也是一一对应,不然无法使用。

  • 步骤1:
    购买后源码,登录官网,下载授权文件。
  • 步骤2:
    添加授权文件到server/license目录,并命名为:my.license ,如果仍无法使用,请联系客服。

特别注意(使用必看)

⚠️ 警告

docker/data目录及其下文件不能修改权限,修改权限会导致异常,甚至无法恢复数据!!!