基于 Docker-Compose 部署可道云资源管理器(KodExplorer)
文章目录
一、项目简介
本文将手把手教你使用 Dockerfile + Docker Compose 构建并部署 KodExplorer(可道云)。我们将基于 CentOS 7.9 构建自定义镜像,并使用 MariaDB + Redis + Nginx + PHP 完成完整的运行环境编排。
最终实现效果:
✅ 一键部署
✅ 容器化管理
✅ 浏览器访问私有云盘
二、准备工作
1. 实验环境
| 组件 | 版本 |
|---|---|
| 操作系统 | CentOS 7.9 |
| Docker | 20.10+ |
| Docker Compose | v2.x |
| 可道云 | KodExplorer 4.37 |
2. 目录结构建议
KodExplorer/
├── Dockerfile-mariadb
├── Dockerfile-redis
├── Dockerfile-nginx
├── Dockerfile-php
├── docker-compose.yaml
├── local.repo
├── yum/ # 本地 yum 源
├── mysql_init.sh
├── php/
│ └── kodexplorer4.37.zip
└── data/ # 持久化数据目录
三、构建 MariaDB 镜像
编写 Dockerfile 构建镜像 explorer-mysql:v1.0,要求使用 CentOS 7.9.2009 镜像作为基础镜像,完成 MariaDB 数据库的安装,设置 root 用户的密码为
root,并设置 MariaDB 数据库开机自启。
3.1 下载软件包解压及导入 CentOS 基础镜像:
tar -zxvf Explorer.tar.gz
docker load -i KodExplorer/CentOS_7.9.2009.tar
cd KodExplorer
3.2 MySQL 初始化脚本:
[root@k8s-master-node1 KodExplorer]# vi mysql_init.sh
#!/bin/bash
# 初始化 MariaDB 数据目录
mysql_install_db --user=root
# 后台启动 MariaDB
mysqld_safe --user=root &
# 等待数据库启动完成
sleep 8
# 设置 root 密码
mysqladmin -u root password 'root'
# 授权 root 远程访问
mysql -uroot -proot -e \
"grant all on *.* to 'root'@'%' identified by 'root'; flush privileges;"
3.3 编写 yum 源:
[root@k8s-master-node1 KodExplorer]# vi local.repo
[yum]
name=yum
baseurl=file:///root/yum
gpgcheck=0
enabled=1
3.4 编写 Dockerfile(explorer-mysql:v1.0)
[root@k8s-worker-node1 KodExplorer]# vi Dockerfile-mariadb
# 使用 CentOS 7.9 作为基础镜像
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
# 清理原有 yum 源
RUN rm -rfv /etc/yum.repos.d/*
# 配置本地 yum 源
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
# 设置字符集
ENV LC_ALL en_US.UTF-8
# 安装 MariaDB 服务器
RUN yum -y install mariadb-server
# 执行初始化脚本
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
# 暴露 3306 端口
EXPOSE 3306
# 启动 MariaDB
CMD ["mysqld_safe", "--user=root"]
3.5 构建镜像:
docker build -t explorer-mysql:v1.0 -f Dockerfile-mariadb .
docker images | grep explorer
四、构建 Redis 缓存镜像
编写 Dockerfile 构建镜像 explorer-redis:v1.0,要求使用 centos:7.9.2009 镜像作为基础镜像,完成 Redis 服务的安装,修改其配置文件关闭保护模式,并设置 Redis 服务开机自启。
4.1 编写 Dockerfile(explorer-redis:v1.0)
[root@k8s-worker-node1 KodExplorer]# vi Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
# 配置本地 yum 源
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
# 安装 Redis
RUN yum -y install redis
# 修改 Redis 配置
# 1. 绑定 0.0.0.0 允许外部访问
# 2. 关闭 protected-mode 以便 Docker 容器访问
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \
sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server", "/etc/redis.conf"]
4.2 构建镜像
docker build -t explorer-redis:v1.0 -f Dockerfile-redis .
docker images
五、构建 Nginx Web 服务器镜像
编写 Dockerfile 构建镜像 explorer-nginx:v1.0,要求使用
centos:7.9.2009镜像作为基础镜像,完成 Nginx 服务的安装,并设置 Nginx 服务开机自启。
5.1 编写 Dockerfile(explorer-nginx:v1.0)
[root@k8s-worker-node1 KodExplorer]# vi Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
# 配置本地 yum 源
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
# 安装 Nginx
RUN yum -y install nginx
EXPOSE 80
# 关键:前台运行 Nginx,防止容器启动后立即退出
CMD ["nginx", "-g", "daemon off;"]
5.2 构建镜像
docker build -t explorer-nginx:v1.0 -f Dockerfile-nginx .
docker images
六、构建 PHP 与可道云运行环境镜像
编写 Dockerfile 构建镜像 explorer-server:v1.0,要求使用 centos:7.9.2009 镜像作为基础镜像,完成 HTTP 和 PHP 服务的安装,然后将 kodexplorer4.37.zip 解压到 /var/www/html 目录下,修改 HTTP 服务的监听地址为本机,并设置 HTTP 服务开机自启。编写 docker-compose.yaml 文件,要求使用镜像 mysql、redis、nginx 和 explorer 完成 Explorer 管理系统的编排部署。
6.1 编写 Dockerfile(explorer-server:v1.0)
[root@k8s-worker-node1 KodExplorer]# vi Dockerfile-php
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
# 配置本地 yum 源
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
# 安装 Apache 和 PHP 及相关扩展(GD库、MB字符串等)
RUN yum install httpd php php-cli unzip php-gd php-mbstring -y
# 设置工作目录为 Web 根目录
WORKDIR /var/www/html
# 复制可道云压缩包并解压
COPY php/kodexplorer4.37.zip .
RUN unzip kodexplorer4.37.zip
# 赋予目录写权限(可道云需要写入配置文件和上传文件)
RUN chmod -R 777 /var/www/html
# 修改 Apache 配置,取消 ServerName 注释
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /etc/httpd/conf/httpd.conf
EXPOSE 80
# 以前台模式启动 Apache
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
6.2 构建镜像
docker build -t explorer-server:v1.0 -f Dockerfile-php .
docker images
七、Docker-Compose 编排部署
编写docker-compose.yaml完成Explorer资源管理系统的部署,要求定义mysql、redis、nginx和explorer 共四个 Service,分别使用镜像explorer-redis:v1.0、explorer-mysql:v1.0、explorer-nginx:v1.0、explorer-server:v1.0,并将explorer 的 80 端口映射到宿主机的8090端口。
[root@k8s-worker-node1 KodExplorer]# vi docker-compose.yaml
version: '3.2'
services:
nginx:
container_name: nginx
image: explorer-nginx:v1.0
volumes:
- ./www:/data/www
- ./nginx/logs:/var/log/nginx
ports:
- "80:80"
- "443:443"
restart: always
depends_on:
- explorer
links:
- explorer
tty: true
mysql:
container_name: mysql
image: explorer-mysql:v1.0
volumes:
- ./data/mysql:/var/lib/mysql
- ./mysql/logs:/var/lib/mysql-logs
ports:
- "3306:3306"
restart: always
redis:
container_name: redis
image: explorer-redis:v1.0
ports:
- "6379:6379"
volumes:
- ./data/redis:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
restart: always
command: redis-server /usr/local/etc/redis/redis.conf
explorer:
container_name: explorer
image: explorer-server:v1.0
ports:
- "8090:80"
links:
- mysql
- redis
restart: always
depends_on:
- redis
- mysql
八、启动与验证
在 docker-compose.yaml所在目录执行:
8.1 启动所有服务
# 后台启动所有容器
docker-compose up -d
# 查看容器运行状态
docker-compose ps
# 查看日志(排错用)
docker-compose logs -f
8.2 访问验证
打开浏览器,访问服务器 IP 加端口:


九、总结与心得
本文通过 4 个 Dockerfile 和 1 个 Compose 文件,完整实现了可道云的容器化部署。
| 组件 | 作用 | 端口 |
|---|---|---|
| MariaDB | 存储用户数据和配置 | 3306 |
| Redis | 缓存加速 | 6379 |
| Nginx | Web 服务/代理 | 80/443 |
| Explorer | 可道云应用本体 | 8090 |
避坑指南:
- 本地 yum 源:在生产环境中建议使用阿里云或华为云 yum 源,本地源仅用于无外网环境。
- 权限问题:如果访问报 500 错误,通常是
/var/www/html目录没有写权限,记得chmod 777。 - 数据库地址:在可道云安装界面,数据库主机名填
mysql(即 service 名称),而不是localhost。
更多推荐
所有评论(0)