CRMEB 开源项目 Docker Compose 一键部署教程

Gitee 官方项目:CRMEB(ZhongBangKeJi/CRMEB) 为例,提供可直接复制、一次成功的 Docker Compose 部署方案,包含 PHP + Nginx + MySQL + Redis 完整环境,全程无需手动配置环境。

项目地址:https://gitee.com/ZhongBangKeJi/CRMEB


一、前置说明

  1. 本教程适配 CRMEB v5/v6 通用版(PHP + ThinkPHP 商城系统)
  2. 一键部署:Nginx + PHP7.4 + MySQL 8 + Redis6.0+
  3. 数据持久化,删除容器不丢失数据
  4. 自带项目所需伪静态、环境配置

二、环境要求

  • 已安装 Docker + Docker Compose
  • 已下载 CRMEB 项目代码到本地/服务器用Trae ide打开项目

三、开始生成

对话框“根据当前项目,帮我生成一个docker-compose启动并运行”,就这么简单,trae ide目前内置多个模型,个人用户基本免费使用,就是用的频率高了,偶尔会提示排队等待,当然也可以自己对接其它的付费模型接口。

四、以下就是生成的结果好了,完美运行

4.1、项目结构

将 CRMEB 代码解压后,在项目根目录创建以下 3 个文件:

CRMEB/                   # 项目根目录
├── docker-compose.yml   # 核心编排文件
├── php
│        ├── Dockerfile                     # PHP 环境构建文件
│        ├── php-ini-overrides.ini          # PHP配置文件
│        ├── nginx.conf                     # Nginx 配置
│        └── supervisord.conf               # 进程守护配置
├── nginx           # Nginx 目录
│        ├──nginx.conf           # Nginx 配置
│        └── log                 # 日志
├── mysql           # Mysql 目录
│        ├──data                 # 数据
│        └── log                 # 日志
├── redis           # Redis 目录
│        ├──data                 # 数据
│        └── log                 # 日志
└── 项目所有文件...

4.2、一键部署文件(直接复制)

4.2.1. docker-compose.yml(核心)

services:
  # mysql 容器
  mysql:
    container_name: crmeb_mysql
    image: mysql:8.0 
    ports:
      - "33061:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_USER: crmeb
      MYSQL_PASSWORD: 123456
      MYSQL_DATABASE: crmeb
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/log:/var/log/mysql
    networks:
      app_net:
        ipv4_address: 192.168.10.11

  # redis 容器
  redis:
    container_name: crmeb_redis
    image: redis:latest
    ports:
      - "63791:6379"
    environment:
      TZ: Asia/Shanghai
      REDIS_PASSWORD: 123456
    networks:
      app_net:
        ipv4_address: 192.168.10.10

  # php 容器
  phpfpm:
    container_name: crmeb_php
    build:
      context: ./php
      dockerfile: Dockerfile
    restart: always
    environment:
      TZ: Asia/Shanghai
      MYSQL_HOST_IP: crmeb_mysql
      MYSQL_PORT: "3306"
      MYSQL_USER: crmeb
      MYSQL_PASSWORD: 123456
      MYSQL_DATABASE: crmeb
      REDIS_HOST_IP: crmeb_redis
      REDIS_PORT: "6379"
      REDIS_DATABASE: "0"
      REDIS_PASSWORD: 123456
      APP_DEBUG: true
      DEFAULT_TIMEZONE: Asia/Shanghai
    working_dir: /var/www
    volumes:
      - ../crmeb:/var/www
      - ../crmeb/runtime:/var/www/runtime
    ports:
      - "9000:9000"
      - "40001:40001"
      - "40002:40002"
    networks:
      app_net:
        ipv4_address: 192.168.10.90

  # nginx 容器
  nginx:
    container_name: crmeb_nginx
    image: nginx:latest
    restart: always
    ports:
      - "8011:80"
    depends_on:
      - phpfpm
    environment:
      TZ: Asia/Shanghai
    working_dir: /var/www
    volumes_from:
      - phpfpm
    volumes:
      - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf
      - ./nginx/log:/etc/nginx/log
    networks:
      app_net:
        ipv4_address: 192.168.10.80

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.10.0/24


4.2.2. Dockerfile(PHP 环境)

FROM docker.1ms.run/php:7.4-fpm

WORKDIR "/var/www"

# 使用国内 Debian 源(腾讯云源)
RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list

# 安装必要的依赖
RUN apt-get update && \
    apt-get -y --no-install-recommends install \
        libfreetype6-dev \
        libjpeg-dev \
        libpng-dev \
        libzip-dev \
        zip \
        unzip \
        wget \
        curl \
        supervisor \
        procps \
        && \
    # 安装PHP扩展
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install -j$(nproc) bcmath mysqli pdo_mysql gd zip pcntl && \
    # 安装Redis扩展
    pecl install redis && \
    docker-php-ext-enable redis && \
    # 创建Supervisor配置目录
    mkdir -p /etc/supervisor/conf.d && \
    # 清理
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 复制PHP配置文件
COPY php-ini-overrides.ini /usr/local/etc/php/conf.d/99-overrides.ini

# 复制Supervisor配置文件
COPY supervisord.conf /etc/supervisor/supervisord.conf

# 配置PHP
RUN echo "open_basedir = /tmp:/var:/dev/null" > /usr/local/etc/php/conf.d/open_basedir.ini

# 暴露端口
EXPOSE 9000

# 启动Supervisor
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

4.2.3. nginx.conf(伪静态 + TP 规则)

server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;
    index index.php index.html;

    # ThinkPHP 伪静态
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP 解析
    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问敏感目录
    location ~ /\. {
        deny all;
    }
}

4.2.4 PHP配置文件php-ini-overrides.ini

upload_max_filesize = 100M
post_max_size = 108M
open_basedir = /tmp:/var:/dev/null
disable_functions = system, passthru, checkdnsrr, getmxrr, getservbyname, getservbyport, syslog, popen, show_source, highlight_file, dl, ftp_connect, ftp_login, ftp_pasv, ftp_get, sys_getloadavg, disk_total_space, disk_free_space
upload_tmp_dir = /var/www/temp

4.2.5 进程守护 supervisord.conf

[supervisord]
nodaemon=true
pidfile=/var/run/supervisord.pid


[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:php-fpm]
command=php-fpm
autostart=true
autorestart=true

[program:queue]
command=php think queue:listen --queue
directory=/var/www
autostart=true
autorestart=true

[program:timer]
command=php think timer start
directory=/var/www
autostart=true
autorestart=false
startsecs=1
startretries=0

[program:workerman]
command=php think workerman start --d
directory=/var/www
autostart=true
autorestart=false
startsecs=1
startretries=0



五、启动部署命令

CRMEB 根目录 执行:

1. 构建并启动容器(首次运行)

docker-compose up -d --build

六、安装 CRMEB 系统

  1. 浏览器访问:
    • 本地/服务器IP:http://localhost:8011
  2. 进入安装界面,填写数据库信息,这个根据yml文件中配置看,我这个是这个信息
mysql信息:
Host:crmeb_mysql Post:3306 user:crmeb db:crmeb pwd:123456
redis信息:
Host:crmeb_redis Post:6379 db:0 pwd:123456

具体查看这个信息在 docker-compose.yml 文件中找到,没有就把上面这个信息,也复制到对话框,让trae生成的时候按你要求来生成

phpfpm:
    container_name: crmeb_php
    image: ccr.ccs.tencentyun.com/crmebky_php/php:v7.4
    restart: always
    environment:
      TZ: Asia/Shanghai
      MYSQL_HOST_IP: crmeb_mysql  #数据库host
      MYSQL_PORT: "3306"          #数据库端口
      MYSQL_USER: crmeb          #数据库用户名
      MYSQL_PASSWORD: 123456     #数据库密码
      MYSQL_DATABASE: crmeb      #数据库名称
      REDIS_HOST_IP: crmeb_redis #redis host
      REDIS_PORT: "6379"         #redis 端口
      REDIS_DATABASE: "0"        #redis 库
      REDIS_PASSWORD: 123456     #redis 密码
  1. 完成安装 → 自动进入后台

后台地址

http://localhost:8011/admin

七、常用管理命令

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose stop

# 重启服务
docker-compose restart

# 彻底关闭(保留数据)
docker-compose down

# 完全重置(清空数据库)
docker-compose down -v

总结

有AI辅助就是快多了,一会就自动运行起来,不管遇到多复杂的项目,都可以快速在docker中运行起来,不用担心给电脑装一堆环境,以及各种不兼容的情况。尤其对于CRMEB这类采用PHP+ThinkPHP架构、需要Nginx、MySQL、Redis多环境协同的开源电商项目来说,传统部署不仅要手动配置各个组件,还要解决版本兼容、端口冲突、权限设置等一系列繁琐问题,耗费大量时间和精力,甚至会让不少开发者卡在环境配置环节,无法顺利启动项目。
而借助Trae IDE的AI能力,一切都变得简单高效——只需在对话框输入一句简单指令,就能自动生成适配CRMEB项目的完整Docker Compose部署套件,包括核心的编排文件、PHP环境构建文件、Nginx配置、PHP自定义配置以及进程守护配置,无需手动编写一行复杂代码。Trae IDE作为字节跳动推出的智能IDE,不仅内置多个免费模型,覆盖绝大多数开发场景,即便偶尔出现排队等待,也完全不影响日常使用,还支持对接第三方付费模型,满足更高需求,其高效的响应速度和稳定的生成能力,真正实现了“一键指令,全量生成”的便捷体验,这也是其能积累全球600万+用户、成为众多开发者首选工具的核心原因之一。

结合Docker Compose的容器编排优势,生成的配置文件自带数据持久化设计,将MySQL、Redis的数据和日志分别挂载到本地目录,确保容器删除后数据不丢失,同时合理分配网络和端口,避免冲突,完美适配CRMEB项目的运行需求。CRMEB作为一款可商用、可二次开发的开源电商系统,本身具备多端适配、高并发支撑等优势,而Trae IDE与Docker的结合,进一步降低了它的部署门槛,让开发者无需关注环境配置的细节,只需复制生成的文件、执行简单命令,就能快速启动项目,专注于业务开发和二次迭代。

这种AI辅助部署的方式,不仅解决了传统部署的痛点,更极大提升了开发效率,无论是新手开发者入门CRMEB项目,还是资深开发者快速搭建测试、生产环境,都能节省大量时间成本。无需担心本地环境混乱,无需花费精力排查环境兼容问题,真正实现了“轻量部署、高效开发”,也让开源项目的落地变得更加简单易行。

当然中间肯定会遇到问题,不用担心AI会自动帮你修复好,肯定能跑起来的。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐