CRMEB/help/docker/README.md

7.3 KiB
Raw Blame History

安装docker

docker 官网下载

https://www.docker.com/products/docker-desktop

命令安装

curl -sSL https://get.daocloud.io/docker | sh

方式一:一键启动CRMEB 系统

docker run -d \
  --name crmeb_app \
  -p 8111:80 \
  -v $(pwd)/crmeb/runtime:/var/www/crmeb/runtime \
  -v $(pwd)/crmeb/uploads:/var/www/crmeb/public/uploads \
  -v $(pwd)/crmeb_mysql:/var/lib/mysql \
  -v $(pwd)/crmeb_redis:/var/lib/redis \
  -e TZ=Asia/Shanghai \
  ccr.ccs.tencentyun.com/zbkj/crmebky:latest

方式二:docker-compose 快速运行项目

1、安装docker-compose

https://www.runoob.com/docker/docker-compose.html

2、下载CRMEB程序

建议去下载最新开源代码 https://gitee.com/ZhongBangKeJi/CRMEB 程序放到docker 同级目录下

3、启动项目(推荐使用 run.sh 脚本)

推荐使用项目提供的 run.sh 管理脚本进行启动,它提供了交互式菜单和命令行两种方式:

3.1 方式一:交互式菜单(推荐)

cd help/docker
chmod +x run.sh
./run.sh

脚本会显示交互式菜单:

  1、安装并启动
  2、启动容器
  3、重启容器
  4、停止容器
  5、删除容器和数据
  6、查看日志
  7、查看帮助
  8、退出

3.2 方式二:命令行参数

# 安装并启动(清理旧数据,首次部署)
./run.sh install

# 启动容器
./run.sh start

# 重启容器
./run.sh restart

# 停止容器
./run.sh stop

# 删除容器和数据
./run.sh delete

# 查看日志
./run.sh logs

# 查看帮助
./run.sh -h

3.3 环境变量

可以通过 COMPOSE_FILE 环境变量指定不同的 compose 文件:

# 使用默认配置
./run.sh install

# 使用其他配置文件
COMPOSE_FILE=docker-compose.build.yml ./run.sh install

3.4 run.sh 脚本功能说明

功能 说明
install 停止旧容器、清理数据(MySQL、runtime)、设置权限、启动新容器
start 启动容器(保留现有数据)
restart 重启容器
stop 停止容器
delete 删除容器和数据(完全清理)
logs 实时查看日志

提示:install 命令会执行以下操作:

  • 删除 install.lock 文件(允许重新安装)
  • 清空 MySQL 数据目录
  • 清空 runtime 缓存目录
  • 设置正确的目录权限

3.5 方式三:使用 Makefile(推荐开发者)

项目提供了 Makefile 文件,支持更丰富的管理命令:

cd help/docker

# 查看所有可用命令
make help

# 安装并启动(首次部署)
make install

# 启动容器
make start

# 停止容器
make stop

# 重启容器
make restart

# 查看日志
make logs

# 查看容器状态
make ps

Makefile 常用命令

命令 说明
make install 安装并启动(清理数据,首次部署)
make start 启动容器
make stop 停止容器
make restart 重启容器
make delete 删除容器和数据
make logs 查看所有日志
make ps 查看容器状态
make clean 清理缓存(保留容器)
make rebuild 重新构建镜像并启动

信息查看命令

命令 说明
make info 查看所有容器信息总览(地址、端口、账号等)
make info-mysql 查看 MySQL 详细信息(连接地址、账号密码)
make info-redis 查看 Redis 详细信息(连接地址、密码)
make info-php 查看 PHP 详细信息(目录映射、端口)
make info-nginx 查看 Nginx 详细信息(访问地址、配置文件)
make info-network 查看网络信息(容器IP、通信方式)
make info-quick 快速参考卡片(常用命令速查)

进阶命令

命令 说明
make exec-php 进入 PHP 容器
make exec-mysql 进入 MySQL 容器
make exec-redis 进入 Redis 容器
make timer 启动定时任务
make workerman 启动长连接服务
make queue 启动队列监听
make services 启动所有服务(定时任务+长连接+队列)
make logs-php 查看 PHP 日志
make logs-mysql 查看 MySQL 日志
make logs-redis 查看 Redis 日志
make logs-nginx 查看 Nginx 日志
make init 完整初始化(首次使用)

指定配置文件

# 使用默认配置
make install

# 使用其他配置文件
COMPOSE_FILE=docker-compose.build.yml make install

3.6 传统方式(直接使用 docker-compose)

如果不使用脚本,也可以直接使用 docker-compose 命令:

进入docker-compose目录 cd /docker

运行命令:

docker-compose up -d

## 4、访问CRMEB 系统
移动端访问地址:http://localhost:8011/
PC端访问地址:http://localhost:8011/admin


## 5、安装CRMEB
### Mysql数据库信息:

Host:crmeb_mysql Post:3306 user:crmeb pwd:123456

### Redis信息:

Host:crmeb_redis Post:6379 db:0 pwd:123456


## 6、常见错误及解决方案

### 6.1 MySQL 启动失败
**错误现象**:MySQL 容器启动失败,日志显示 "--initialize specified but the data directory has files in it. Aborting."

**解决方案**:
1. 停止所有容器:`docker-compose down`
2. 清空数据目录:`rm -rf mysql/data/*`
3. 重新启动服务:`docker-compose up -d`

**原因**:MySQL 数据目录不为空,导致初始化失败。

### 6.2 数据目录映射问题
**错误现象**:数据库无法启动或数据无法持久化

**解决方案**:
1. 确保 `mysql/data` 目录存在:`mkdir -p mysql/data`
2. 确保 `mysql/data` 目录为空
3. 确保 docker-compose.yml 中正确配置了数据卷映射:
   ```yaml
   volumes:
     - ./mysql/data:/var/lib/mysql

原因:数据目录未映射或映射不正确,导致数据库无法创建或数据丢失。

6.3 常见需要映射的目录说明

6.3.1 MySQL 数据目录

  • 本地路径:mysql/data
  • 容器路径:/var/lib/mysql
  • 用途:存储 MySQL 数据库的数据文件
  • 注意事项:必须为空目录,否则 MySQL 初始化会失败

6.2 MySQL 日志目录

  • 本地路径:mysql/log
  • 容器路径:/var/log/mysql
  • 用途:存储 MySQL 的日志文件
  • 注意事项:确保目录存在且有读写权限

6.3.2 PHP 应用目录

  • 本地路径:../../crmeb
  • 容器路径:/var/www
  • 用途:存储 CRMEB 应用代码
  • 注意事项:确保目录存在且包含完整的 CRMEB 代码

6.3.3 PHP 运行时目录

  • 本地路径:../../crmeb/runtime
  • 容器路径:/var/www/runtime
  • 用途:存储 PHP 应用的运行时文件,如缓存、日志等
  • 注意事项:确保目录存在且有读写权限

6.3.4 Nginx 配置目录

  • 本地路径:./nginx/vhost.conf
  • 容器路径:/etc/nginx/conf.d/default.conf
  • 用途:Nginx 虚拟主机配置文件
  • 注意事项:确保配置文件存在且格式正确

6.3.5 Nginx 日志目录

  • 本地路径:./nginx/log
  • 容器路径:/etc/nginx/log
  • 用途:存储 Nginx 的日志文件
  • 注意事项:确保目录存在且有读写权限

6.3.6 目录创建命令

# 创建所有必要的目录
mkdir -p mysql/data mysql/log nginx/log

# 确保 CRMEB 应用目录存在
mkdir -p ../crmeb ../crmeb/runtime