KodBox 可道云 Docker Compose 部署图文教程
0. 环境速览
以下信息来自服务器上正在运行的 KodBox 容器(docker inspect kodbox 实测)及其 1Panel 应用目录,教程步骤以这套实际配置为蓝本,密码位置已用占位符替代。
| 项目 | 实际值 | 说明 |
|---|---|---|
| 镜像 | kodcloud/kodbox:v1.4505 | KodBox 官方镜像(内置 PHP 8.2 + Nginx + Supervisor) |
| 容器名 | kodbox | 同网络内通过 kodbox 访问 |
| 端口映射 | 0.0.0.0:8081 → 80/tcp | 对外暴露,浏览器访问入口 |
| 站点目录 | /opt/1panel/apps/kodbox/kodbox/site → /var/www/html | bind 挂载,站点源码与数据持久化 |
| 网络 | 1panel-network(172.18.0.5) | external 网络,与 MySQL 在同一网络 |
| 重启策略 | always | 崩溃自动拉起、开机自启 |
| 数据库 | MySQL 8.0 · 库 kodbox(25 张表) |
独立库,独立账号 kodbox@% |
| 数据库连接 | (服务器IP):3306(mysqli) | 走宿主机 IP 连 MySQL 对外 3306 |
| 缓存 | file(文件缓存) | 不依赖 Redis,零额外组件 |
1. 部署架构
8081 端口;数据(站点源码、上传文件、系统数据)全部通过 bind 挂载持久化在宿主机 site 目录。数据库使用同机的 MySQL 8.0 独立库 kodbox,不使用 Redis(缓存走文件)。
2. 前置条件
- Docker 与 Docker Compose 已安装(Docker ≥ 20.10,Compose v2)。本服务器实测 Docker 26.1.4 / Compose v2.27.1。
- MySQL 8.0 已按《MySQL Docker Compose 部署图文教程》部署在
1panel-network网络,根密码已验证;直接复用其3306对外端口。 - 一个对外端口
8081(本服务器即 8081,需在云安全组/防火墙放行)。 - 可选的域名与 Nginx/1Panel 反向代理(教程末尾介绍)。
3. 步骤一:创建数据库与账号
KodBox 需要一个独立数据库。进入 MySQL 容器,用 root 创建库 kodbox 和专用账号(本服务器已按此建好):
docker exec -it mysql mysql -uroot -p'你的Root密码'
# 在 MySQL 提示符下执行:
CREATE DATABASE IF NOT EXISTS kodbox DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'kodbox'@'%' IDENTIFIED BY '你的KodBox库密码';
GRANT ALL PRIVILEGES ON kodbox.* TO 'kodbox'@'%';
FLUSH PRIVILEGES;
EXIT;
19**** 等已用占位符替代。账号与库创建后,下面 compose 只需拉起 KodBox,数据库由 MySQL 教程一保证可用。验证:确认账号可登录、库已建成功(本服务器实测 25 张业务表):
docker exec mysql mysql -uroot -p'你的Root密码' -e "SELECT user,host FROM mysql.user WHERE user='kodbox'; SHOW GRANTS FOR 'kodbox'@'%';"
4. 步骤二:编写 docker-compose.yml
本服务器 KodBox 由 1Panel 应用商店创建,Compose 项目目录位于 /opt/1panel/apps/kodbox/kodbox。下方给出一份标准化的、与现网配置一致的 compose 文件,可直接手动创建:
mkdir -p /opt/1panel/apps/kodbox/kodbox
vi /opt/1panel/apps/kodbox/kodbox/docker-compose.yml
粘贴以下内容(端口可按需调整):
networks:
1panel-network: # 复用已有网络
external: true
services:
kodbox:
container_name: kodbox
image: kodcloud/kodbox:v1.4505 # KodBox 官方镜像
restart: always # 开机自启、崩溃自动拉起
ports:
- "8081:80" # 宿主机 8081 → 容器 80
volumes:
- ./site:/var/www/html # 站点源码与数据持久化
networks:
- 1panel-network
deploy:
resources:
limits:
cpus: "0.5" # 可按需调整
memory: 512M
关键参数说明
| 参数 | 作用 |
|---|---|
| ports | 宿主机 8081 映射容器 80,浏览器访问入口 |
| volumes ./site | 站点程序、上传文件、系统数据全部落盘,容器升级/重建数据不丢 |
| restart: always | 进程崩溃自动重启,服务器重启后自动拉起 |
| 1panel-network: external | 复用已有 Docker 网络,便于与 MySQL 等其他容器互通 |
| deploy.resources | 限制 CPU/内存,防止占用过多(1Panel 面板会加此段) |
docker run -d --name kodbox --network 1panel-network -p 8081:80 --restart always -v /opt/1panel/apps/kodbox/kodbox/site:/var/www/html kodcloud/kodbox:v1.4505。
5. 步骤三:启动容器
cd /opt/1panel/apps/kodbox/kodbox
docker compose up -d # 后台启动(首次会拉取 kodbox 镜像)
docker compose ps # 状态应为 Up
验证容器与端口:
docker ps | grep kodbox
docker port kodbox # 显示 80/tcp -> 0.0.0.0:8081
curl -I http://127.0.0.1:8081 # 应返回 HTTP 200
docker stop kodbox && docker rm kodbox(site 目录保留,数据不丢)。
6. 步骤四:配置数据库与首次安装
浏览器访问 http://(服务器IP):8081,进入 KodBox 安装向导,填写数据库信息(与步骤一创建的一致):
| 安装项 | 推荐值 | 说明 |
|---|---|---|
| 数据库地址 | (服务器IP) | MySQL 对外 IP(本机用 127.0.0.1 也可,但容器内建议用宿主机 IP 或服务名宿主可达地址) |
| 数据库端口 | 3306 | MySQL 对外端口 |
| 数据库名 | kodbox | 步骤一创建的库 |
| 用户名 | kodbox | 步骤一创建的账号 |
| 密码 | 你的KodBox库密码 | 步骤一设置 |
| 管理员/密码 | 自定义强密码 | KodBox 后台超级管理员 |
安装成功后,系统在 site/config/setting_user.php 写入数据库连接配置(本服务器实测):
$config['database'] = array (
'DB_TYPE' => 'mysqli',
'DB_HOST' => '(服务器IP)', // MySQL 宿主机 IP
'DB_PORT' => 3306,
'DB_USER' => 'kodbox',
'DB_PWD' => '你的KodBox库密码',
'DB_NAME' => 'kodbox',
);
再次刷新浏览器,用创建的管理员账号登录,即可开始使用 KodBox 网盘。
7. 步骤五:日常运维
查看日志与重启
docker compose logs -f kodbox # 实时日志
docker compose restart kodbox # 重启服务
备份(强烈建议)
同时备份站点目录与数据库:
# 1. 站点/上传文件(site 目录即全部站点数据)
tar czf /opt/docker/backup/kodbox-site-$(date +%F).tar.gz -C /opt/1panel/apps/kodbox/kodbox/site .
# 2. 数据库
docker exec mysql mysqldump -uroot -p'你的Root密码' kodbox > /opt/docker/backup/kodbox-db-$(date +%F).sql
升级镜像
cd /opt/1panel/apps/kodbox/kodbox
docker compose pull kodbox # 拉取新镜像
docker compose up -d kodbox # 重建容器(site 卷自动保留)
docker compose up -d --force-recreate 重建,或回退镜像标签。
8. 常见问题
Q1:访问 http://IP:8081 打不开?
按顺序排查:① 云安全组/防火墙是否放行 8081;② docker ps 容器是否 Up;③ docker port kodbox 是否 0.0.0.0:8081->80;④ curl -I http://127.0.0.1:8081 是否 200;⑤ 是否已改端口而未重建容器。
Q2:安装时“数据库连接失败”?
① 数据库地址端口是否正确;② 账号/密码/库名是否与 MySQL 实际一致;③ KodBox 与 MySQL 是否都能互通(本服务器均走宿主机 IP (服务器IP):3306,需确认 MySQL 对外 3306 已开放);④ MySQL 是否正常 docker ps。
Q3:上传大文件失败 / PHP 限制?
KodBox 镜像默认已调大上传限制;若仍失败,检查磁盘剩余空间 df -h,并确认 site/data/files 所在分区足够。也可在 site/config/setting_user.php 中按需覆盖 maxUploadSize 等参数。
Q4:如何为 KodBox 配域名和 HTTPS?
最简单:用 1Panel 创建一个反代网站,把域名指向 http://127.0.0.1:8081,并自动申请/续期 Let’s Encrypt 证书;或在宿主机 Nginx/Caddy 前做一层反向代理并挂证书。不建议直接让 8081 对外明文传输敏感数据。
Q5:数据库连接为什么用宿主机 IP 而不是 mysql:3306?
本服务器是后端 MySQL 源码中填写的地址,走宿主机对外 3306;只要安全组只对内网/白名单开放即可。更安全的方式是把 KodBox 与 MySQL 都放在同一 Docker 网络内,数据库地址填服务名 mysql,端口 3306,不对外暴露库端口。
docker compose up -d 起 MySQL;本教程 → KodBox 容器化部署并连 kodbox 库;浏览器访问 http://(服务器IP):8081 完成网盘初始化。至此一套「MySQL + KodBox 私有网盘」容器化服务部署完成。



暂无评论内容