1panel面板docker部署独角数卡
使用 1Panel 容器编排一键部署独角数卡
独角数卡(Dujiaoka)是一款开源的自动化售货系统,界面美观且功能强大。本文将详细介绍如何利用 1Panel 面板的容器编排功能,通过 Docker 快速部署独角数卡,并解决了近期常见的 BootCDN 投毒导致的安装报错问题。
前置准备
在使用本教程之前,请确保你的 1Panel 面板已经安装了以下应用(在 1Panel 应用商店安装即可):
- OpenResty: 用于反向代理和域名访问。
- MySQL: 数据库服务(安装时无需勾选“端口外部访问”)。
- Redis: 缓存服务(安装时无需勾选“端口外部访问”)。
注意:确保这三个应用都正常运行。
第一步:创建容器编排
- 登录 1Panel 面板,进入 容器 -> 编排 -> 创建编排。
- 在编辑框中输入以下
docker-compose.yml内容:
1 | version: "3" |
配置说明:
networks: 使用1panel-network是为了让独角数卡能直接连接到 1Panel 创建的 MySQL 和 Redis 容器。INSTALL=true: 首次启动必须为true,用于进入网页安装向导。
提示:建议先进行下一步(创建配置文件),然后再点击确认创建/启动编排,以免因缺少文件导致启动失败。
第二步:配置环境文件 (关键步骤)
在启动容器之前,必须先手动创建配置文件,否则 Docker 会自动创建一个名为 env.conf 的文件夹而不是文件,导致挂载失败。
进入 1Panel 的 主机 -> 文件,或者使用终端 SSH 连接。
进入编排目录(假设你刚才创建的编排目录是
dujiaoka):1
cd /opt/1panel/docker/compose/dujiaoka
下载官方配置文件模板并重命名:
1
2
3
4
5# 下载 .env 模板并保存为 env.conf
wget https://raw.githubusercontent.com/assimon/dujiaoka/master/.env -O env.conf
# 修改权限,防止权限不足报错
chmod -R 777 env.conf
⚠️ 避坑指南:
请务必检查当前目录下是否存在名为env.conf的文件夹。如果存在,请立即删除它,确保env.conf是一个文件。
第三步:准备数据库与缓存
1. 创建 MySQL 数据库
在 1Panel 面板中,进入 数据库 -> MySQL -> 创建数据库。
- 名称: 例如
dujiaoka - 用户: 例如
dujiaoka - 密码: 设置一个强密码并记下来。
2. 获取 Redis 密码
在 1Panel 面板中,进入 容器 列表,找到 Redis 容器,查看其环境变量或配置,记录下 Redis 的连接密码。
第四步:启动容器与安装
启动容器:
回到 容器 -> 编排 页面,启动刚才创建的dujiaoka编排。或者在终端执行:1
docker-compose up -d
**生成
APP_KEY**:
容器启动后,需要生成密钥填入配置文件。在终端执行以下命令进入容器并生成 Key:1
2
3
4
5# 进入容器(假设容器名为 dujiaoka-dujiaoka-1,请根据实际情况调整)
docker exec -it dujiaoka-dujiaoka-1 /bin/bash
# 执行生成命令
php artisan key:generate
或者,你也可以直接修改 env.conf 文件,将生成的 Key 填入 APP_KEY 字段。
3. 网页安装与报错处理:
在浏览器访问 http://服务器IP:56789 进入安装向导。
⚠️ 常见报错处理:The POST method is not supported
如果在安装过程中提交数据时,出现如下错误:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpExceptionThe POST method is not supported for this route. Supported methods: GET, HEAD
原因:这是由于 BootCDN 抽风或存在投毒问题,导致 jQuery 加载失败。
解决方法:修改容器内的安装页面文件,将 CDN 链接替换为本地链接。
进入容器终端(如果还在容器外):
1
docker exec -it dujiaoka-dujiaoka-1 /bin/bash
编辑安装页面文件:
1
2# 容器内通常包含 vi 或 vim
vi resources/views/common/install.blade.php找到第 769 行左右,找到引用 bootcdn 的 script 标签。
将其修改为本地引用:
1
<script src="/assets/hyper/js/jquery-3.4.1.min.js"></script>
保存并退出(
:wq),刷新网页即可正常安装。填写配置信息:
- MySQL 连接地址: 输入 MySQL 容器的名称(例如
mysql)或其在1panel-network中的内部 IP。切记不要填 127.0.0.1。 - Redis 连接地址: 输入 Redis 容器的名称(例如
redis)或其内部 IP。 - 网站 URL: 填写你打算绑定的域名(带 http:// 或 https://)。
注意这里三个要在一个段
- 安装成功后,完成下面内容后重启一次容器。
第五步:收尾与安全设置 (必须执行)
安装完成后,为了安全和性能,需要关闭调试模式和安装模式。
1. 修改 env.conf 文件
找到并修改以下参数:
1 | APP_DEBUG=false |
2. 修改 docker-compose.yml 文件
在编排界面点击“编辑”,修改环境变量:
1 | environment: |
3. 重启容器
保存上述修改后,重建/重启编排:
1 | docker-compose restart |
第六步:配置反向代理 (域名访问)
为了通过域名访问并开启 HTTPS,我们需要配置 OpenResty 反向代理。
- 进入 1Panel 网站 -> 创建网站 -> 反向代理。
- 主域名: 填写你的域名。
- 代理地址:
127.0.0.1:56789。 - 申请并启用 HTTPS 证书。
⚡ HTTPS 后的特殊配置
如果你开启了 HTTPS,可能会发现后台登录报错或无限跳转。这是因为独角数卡后台需要强制开启 HTTPS 支持。
打开
/opt/1panel/docker/compose/dujiaoka/env.conf文件。找到并修改以下配置:
1
2# 后台登录出现 0err 或其他登录异常问题,大概率是开启了 https 而后台没有开启
ADMIN_HTTPS=true重启容器生效。
附加:移除独角数卡标识
可以通过批量搜索替换实现:
进入docker容器:
1 | sudo docker exec -it 容器名称 /bin/sh |
修改名字:
1 | grep -rIl "独角数卡" . | xargs sed -i 's/独角数卡/要改为的名字/g' |
修改管理面板的独角兽头像:
1 | grep -rIl "/vendor/dujiaoka-admin/images/logo.jpg" . | xargs sed -i 's#/vendor/dujiaoka-admin/images/logo.jpg#/uploads/images/logo.jpg#g' |
把想改的头像改为logo.jpg放到images文件夹里面就行
然后退出容器后重启容器,我这里是用的容器编排:
1 | docker-compose restart |
重新打开网页发现已经修改完成:









