使用 1Panel 容器编排一键部署独角数卡

独角数卡(Dujiaoka)是一款开源的自动化售货系统,界面美观且功能强大。本文将详细介绍如何利用 1Panel 面板的容器编排功能,通过 Docker 快速部署独角数卡,并解决了近期常见的 BootCDN 投毒导致的安装报错问题。

前置准备

在使用本教程之前,请确保你的 1Panel 面板已经安装了以下应用(在 1Panel 应用商店安装即可):

  1. OpenResty: 用于反向代理和域名访问。
  2. MySQL: 数据库服务(安装时无需勾选“端口外部访问”)。
  3. Redis: 缓存服务(安装时无需勾选“端口外部访问”)。

注意:确保这三个应用都正常运行。


第一步:创建容器编排

  1. 登录 1Panel 面板,进入 容器 -> 编排 -> 创建编排
  2. 在编辑框中输入以下 docker-compose.yml 内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"

services:
dujiaoka:
image: ghcr.io/apocalypsor/dujiaoka:latest
networks:
- 1panel-network
environment:
# 安装阶段设置为 true,安装完成后必须改为 false
- INSTALL=true
# - MODIFY=true
volumes:
- ./env.conf:/dujiaoka/.env
- ./uploads:/dujiaoka/public/uploads
- ./storage:/dujiaoka/storage
ports:
- 56789:80
restart: always

networks:
1panel-network:
external: true

Alt text

配置说明:

  • networks: 使用 1panel-network 是为了让独角数卡能直接连接到 1Panel 创建的 MySQL 和 Redis 容器。
  • INSTALL=true: 首次启动必须为 true,用于进入网页安装向导。

提示:建议先进行下一步(创建配置文件),然后再点击确认创建/启动编排,以免因缺少文件导致启动失败。


第二步:配置环境文件 (关键步骤)

在启动容器之前,必须先手动创建配置文件,否则 Docker 会自动创建一个名为 env.conf文件夹而不是文件,导致挂载失败。

  1. 进入 1Panel 的 主机 -> 文件,或者使用终端 SSH 连接。

  2. 进入编排目录(假设你刚才创建的编排目录是 dujiaoka):

    1
    cd /opt/1panel/docker/compose/dujiaoka
  3. 下载官方配置文件模板并重命名:

    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

Alt text

⚠️ 避坑指南
请务必检查当前目录下是否存在名为 env.conf文件夹。如果存在,请立即删除它,确保 env.conf 是一个文件


第三步:准备数据库与缓存

1. 创建 MySQL 数据库

在 1Panel 面板中,进入 数据库 -> MySQL -> 创建数据库

  • 名称: 例如 dujiaoka
  • 用户: 例如 dujiaoka
  • 密码: 设置一个强密码并记下来。
    Alt text

2. 获取 Redis 密码

在 1Panel 面板中,进入 容器 列表,找到 Redis 容器,查看其环境变量或配置,记录下 Redis 的连接密码。
Alt text


第四步:启动容器与安装

  1. 启动容器
    回到 容器 -> 编排 页面,启动刚才创建的 dujiaoka 编排。或者在终端执行:

    1
    docker-compose up -d
  2. **生成 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\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD

原因:这是由于 BootCDN 抽风或存在投毒问题,导致 jQuery 加载失败。
解决方法:修改容器内的安装页面文件,将 CDN 链接替换为本地链接。

  1. 进入容器终端(如果还在容器外):

    1
    docker exec -it dujiaoka-dujiaoka-1 /bin/bash
  2. 编辑安装页面文件:

    1
    2
    # 容器内通常包含 vi 或 vim
    vi resources/views/common/install.blade.php
  3. 找到第 769 行左右,找到引用 bootcdn 的 script 标签。

  4. 将其修改为本地引用:

    1
    <script src="/assets/hyper/js/jquery-3.4.1.min.js"></script>
  5. 保存并退出(:wq),刷新网页即可正常安装。

  6. 填写配置信息

  • MySQL 连接地址: 输入 MySQL 容器的名称(例如 mysql)或其在 1panel-network 中的内部 IP。切记不要填 127.0.0.1
  • Redis 连接地址: 输入 Redis 容器的名称(例如 redis)或其内部 IP。
  • 网站 URL: 填写你打算绑定的域名(带 http:// 或 https://)。
    Alt text

    注意这里三个要在一个段
    Alt text

  1. 安装成功后,完成下面内容后重启一次容器。

第五步:收尾与安全设置 (必须执行)

安装完成后,为了安全和性能,需要关闭调试模式和安装模式。

1. 修改 env.conf 文件

找到并修改以下参数:

1
APP_DEBUG=false

2. 修改 docker-compose.yml 文件

在编排界面点击“编辑”,修改环境变量:

1
2
environment:
- INSTALL=false # 将 true 改为 false

3. 重启容器

保存上述修改后,重建/重启编排:

1
docker-compose restart

第六步:配置反向代理 (域名访问)

为了通过域名访问并开启 HTTPS,我们需要配置 OpenResty 反向代理。

  1. 进入 1Panel 网站 -> 创建网站 -> 反向代理
  2. 主域名: 填写你的域名。
  3. 代理地址: 127.0.0.1:56789
  4. 申请并启用 HTTPS 证书。

⚡ HTTPS 后的特殊配置

如果你开启了 HTTPS,可能会发现后台登录报错或无限跳转。这是因为独角数卡后台需要强制开启 HTTPS 支持。

  1. 打开 /opt/1panel/docker/compose/dujiaoka/env.conf 文件。

  2. 找到并修改以下配置:

    1
    2
    # 后台登录出现 0err 或其他登录异常问题,大概率是开启了 https 而后台没有开启
    ADMIN_HTTPS=true
  3. 重启容器生效。


附加:移除独角数卡标识

image-20260117151601567

可以通过批量搜索替换实现:

进入docker容器:

1
sudo docker exec -it 容器名称 /bin/sh

修改名字:

1
2
3
grep -rIl "独角数卡" . | xargs sed -i 's/独角数卡/要改为的名字/g'
grep -rIl "独角 数卡" . | xargs sed -i 's/独角 数卡/要改为的名字/g'
grep -rIl "dujiaoka.com" . | xargs sed -i 's/dujiaoka\.com/要改成的域名/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

重新打开网页发现已经修改完成:
image-20260117153542308

至此,你已经成功在 1Panel 上部署了独角数卡系统。Enjoy!😁